home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume25 / trn / part13 < prev    next >
Encoding:
Internet Message Format  |  1991-12-02  |  83.6 KB

  1. Subject:  v25i016:  trn 2.0 - threaded newsreader based on rn 4.4, Part13/13
  2. Newsgroups: comp.sources.unix
  3. Approved: vixie@pa.dec.com
  4.  
  5. Submitted-by: davison@borland.com (Wayne Davison)
  6. Posting-number: Volume 25, Issue 16
  7. Archive-name: trn/part13
  8.  
  9. #! /bin/sh
  10. # This is a shell archive.  Remove anything before this line, then unpack
  11. # it by saving it into a file and typing "sh file".  To overwrite existing
  12. # files, type "sh file -c".  You can also feed this as standard input via
  13. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  14. # will see the following message at the end:
  15. #        "End of archive 13 (of 13)."
  16. # Contents:  trn.1
  17. # Wrapped by vixie@cognition.pa.dec.com on Tue Dec  3 16:34:58 1991
  18. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  19. if test -f 'trn.1' -a "${1}" != "-c" ; then 
  20.   echo shar: Will not clobber existing file \"'trn.1'\"
  21. else
  22. echo shar: Extracting \"'trn.1'\" \(83112 characters\)
  23. sed "s/^X//" >'trn.1' <<'END_OF_FILE'
  24. X.\" $Id: trn.1,v 4.4.3.1 1991/11/22 04:13:39 davison Trn $
  25. X.\" 
  26. X.\" This software is Copyright 1991 by Stan Barber. 
  27. X.\"
  28. X.\" Permission is hereby granted to copy, reproduce, redistribute or otherwise
  29. X.\" use this software as long as: there is no monetary profit gained
  30. X.\" specifically from the use or reproduction of this software, it is not
  31. X.\" sold, rented, traded or otherwise marketed, and this copyright notice is
  32. X.\" included prominently in any copy made. 
  33. X.\"
  34. X.\" The author make no claims as to the fitness or correctness of this software
  35. X.\" for any use whatsoever, and it is provided as is. Any use of this software
  36. X.\" is at the user's own risk. 
  37. X.\" 
  38. X.de Sh
  39. X.br
  40. X.ne 5
  41. X.PP
  42. X\fB\\$1\fR
  43. X.PP
  44. X..
  45. X.de Sp
  46. X.if t .sp .5v
  47. X.if n .sp
  48. X..
  49. X.de Ip
  50. X.br
  51. X.ie \\n.$>=3 .ne \\$3
  52. X.el .ne 3
  53. X.IP "\\$1" \\$2
  54. X..
  55. X.\"
  56. X.\"     Set up \*(-- to give an unbreakable dash;
  57. X.\"
  58. X.tr \(bs-|\(bv\*(Tr
  59. X.ie n \{\
  60. X.ds -- \(bs-
  61. X.if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch
  62. X.if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch
  63. X.ds L" ""
  64. X.ds R" ""
  65. X.ds L' '
  66. X.ds R' '
  67. X'br\}
  68. X.el\{\
  69. X.ds -- \(em\|
  70. X.tr \*(Tr
  71. X.ds L" ``
  72. X.ds R" ''
  73. X.ds L' `
  74. X.ds R' '
  75. X'br\}
  76. X.TH TRN 1 LOCAL
  77. X.UC 6
  78. X.SH NAME
  79. trn - threaded read news program
  80. X.SH SYNOPSIS
  81. X.B trn [options] [newsgroups]
  82. X.SH DESCRIPTION
  83. X.I Trn
  84. is a threaded version of
  85. X.I rn,
  86. which is a replacement for the readnews(1) program.
  87. Being \*(L"threaded\*(R" means that the articles are interconnected
  88. in reply order.
  89. XEach discussion thread is a tree of articles, where all the
  90. reply (child) articles branch off from their respective originating
  91. X(parent) articles.
  92. A representation of this tree (or a portion of it) is displayed in the
  93. article header as you are reading news.
  94. This gives you a better feel for how all the articles are related, and
  95. even lets you see at a glance when an article already has a plethora of
  96. replies (to avoid beating a subject to death).
  97. In addition,
  98. X.I trn
  99. has a thread selector menu that allows you to quickly browse
  100. the subjects and authors of the available threads and choose the
  101. ones you find interesting.
  102. The remaining threads can either be saved for later or marked as read.
  103. X.PP
  104. If you are already familiar with
  105. X.I rn
  106. you will probably want to skip forward to the section on the
  107. X.IR "Thread Selection Mode" ,
  108. then move on to read about the
  109. X.IR "Tree Display" ,
  110. and finish with the summary of
  111. X.IR "What's New" ?
  112. with
  113. X.IR trn .
  114. If you're impatient, just dive in and get started.
  115. All the regular commands are the same as those in
  116. X.IR rn ,
  117. and the on-line help will give you a quick run-down of what new commands are
  118. available.
  119. Just type \*(L'h\*(R' from any prompt.
  120. I'd suggest using the command:
  121. X.Sp
  122. X    trn \-x \-X
  123. X.Sp
  124. to make sure some of the best new features are turned on.
  125. X.Sh "Starting Trn"
  126. If no newsgroups are specified, all the newsgroups which have unread news
  127. are displayed, and then the user is asked for each one whether he wants to
  128. read it, in the order in which the newsgroups occur in the
  129. X.I .newsrc
  130. file.
  131. With a list of newsgroups,
  132. X.I trn
  133. will start up in \*(L"add\*(R" mode, using the list as a set of patterns to
  134. add new newsgroups and restrict which newsgroups are displayed.
  135. See the discussion of the \*(L'a\*(R' command on the newsgroup selection
  136. level.
  137. X.PP
  138. X.I Trn
  139. operates on four levels: the newsgroup selection level, the thread
  140. selection level, the article selection level, and the paging level.
  141. XEach level has its own set of commands, and its own help menu.
  142. At the paging level (the bottom level),
  143. X.I trn
  144. behaves much like the
  145. X.IR more (1)
  146. program.
  147. At the thread selection level, you are presented with the subjects and
  148. X(optionally) authors associated with each discussion thread, and given
  149. a chance to choose which ones you wish to read now, save for later, or
  150. manipulate in some way.
  151. At the article selection level, you may read them in the default order
  152. X(which follows the discussion of the articles and their replies), or jump
  153. around from one article to another.
  154. At the newsgroup selection level (the top level), you may specify which
  155. newsgroup you want next, or read them in the default order, which is the
  156. order that the newsgroups occur in your
  157. X.I .newsrc
  158. file.
  159. X(You will therefore want to rearrange your
  160. X.I .newsrc
  161. file to put the most interesting newsgroups first.
  162. This can be done with the \*(L'm\*(R' command on the Newsgroup Selection level.
  163. WARNING: invoking readnews/vnews (the old user interface) in any way (including
  164. as a news checker in your login sequence!) will cause your
  165. X.I .newsrc
  166. to be disarranged again.)
  167. X.PP
  168. On any level, at ANY prompt, help is available in the form of a summary of
  169. available commands and what they do by typing an \*(L'h\*(R'.
  170. This is probably the most important command to remember, so don't you
  171. forget it.
  172. X.PP
  173. Typing space to any question means to do the normal thing.
  174. You will know what that is because
  175. every prompt has a list of several plausible commands enclosed in
  176. square brackets.
  177. The first command in the list is the one which will be done if you type
  178. a space.
  179. X(All input is done in cbreak mode, so carriage returns should not be typed
  180. to terminate anything except certain multi-character commands.
  181. Those commands will be obvious in the discussion below because they take an
  182. argument.)
  183. X.PP
  184. Upon startup,
  185. X.I trn
  186. will do several things:
  187. X.Ip 1. 4
  188. It will look for your
  189. X.I .newsrc
  190. file, which is your list of subscribed-to
  191. newsgroups.
  192. If
  193. X.I trn
  194. doesn't find a
  195. X.IR .newsrc ,
  196. it will create one.
  197. If it does find one, it will back it up under the name \*(L".oldnewsrc\*(R".
  198. X.Ip 2. 4
  199. It will input your
  200. X.I .newsrc
  201. file, listing out the first several newsgroups
  202. with unread news.
  203. X.Ip 3. 4
  204. It will perform certain consistency checks on your
  205. X.IR .newsrc .
  206. If your
  207. X.I .newsrc
  208. is out of date in any of several ways,
  209. X.I trn
  210. will warn you and patch it up for you, but you may have to wait a little
  211. longer for it to start up.
  212. X.Ip 4. 4
  213. X.I Trn
  214. will next check to see if any new newsgroups have been created, and give
  215. you the opportunity to add them to your
  216. X.IR .newsrc .
  217. X.Ip 5. 4
  218. X.I Trn
  219. goes into the top prompt level\*(--the newsgroup selection level.
  220. X.Sh "Newsgroup Selection Level"
  221. In this section the words \*(L"next\*(R" and \*(L"previous\*(R" refer to
  222. the ordering of the newsgroups in your
  223. X.I .newsrc
  224. file.
  225. On the newsgroup selection level, the prompt looks like this:
  226. X.Sp
  227. X******** 17 unread articles in talk.blurfl\*(--read now? [ynq]
  228. X.Sp
  229. and the following commands may be given at this level:
  230. X.Ip y,SP 8
  231. Do this newsgroup now.
  232. X.Ip .command 8
  233. Do this newsgroup now, but execute
  234. X.I command
  235. before displaying anything.
  236. The command will be interpreted as if given on the article selection level.
  237. X.Ip \+ 8
  238. XEnter this newsgroup through the thread selector.
  239. X.Ip = 8
  240. Start this newsgroup, but list subjects before displaying articles.
  241. X.Ip U 8
  242. XEnter this newsgroup through the \*(L"Set unread\*(R" prompt.
  243. X.Ip t 8
  244. Toggle the always-read-threaded flag for the current group.
  245. X.Ip n 8
  246. Go to the next newsgroup with unread news.
  247. X.Ip N 8
  248. Go to the next newsgroup.
  249. X.Ip p 8
  250. Go to the previous newsgroup with unread news.
  251. If there is none, stay at the current newsgroup.
  252. X.Ip P 8
  253. Go to the previous newsgroup.
  254. X.Ip \- 8
  255. Go to the previously displayed newsgroup (regardless of whether it is
  256. before or after the current one in the list).
  257. X.Ip 1 8
  258. Go to the first newsgroup.
  259. X.Ip ^ 8
  260. Go to the first newsgroup with unread news.
  261. X.Ip $ 8
  262. Go to the end of the newsgroups list.
  263. X.Ip "g newsgroup" 8
  264. Go to
  265. X.IR newsgroup .
  266. If it isn't currently subscribed to, you will be asked if you want to
  267. subscribe.
  268. X.Ip "/pattern" 8
  269. Scan forward for a newsgroup matching
  270. X.IR pattern .
  271. Patterns do globbing like filenames, i.e., use ? to match a single
  272. character, * to match any sequence of characters, and [] to specify a list
  273. of characters to match.
  274. X(\*(L"all\*(R" may be used as a synonym for \*(L"*\*(R".)
  275. Unlike normal filename globbing, newsgroup searching is not anchored to
  276. the front and back of the filename, i.e. \*(L"/ski\*(R" will find
  277. rec.skiing.
  278. You may use ^ or $ to anchor the front or back of the search:
  279. X\*(L"/^test$\*(R" will find newsgroup test and nothing else
  280. If you want to include newsgroups with 0 unread articles, append /r.
  281. If the newsgroup is not found between the current newsgroup and the last
  282. newsgroup, the search will wrap around to the beginning.
  283. X.Ip "?pattern" 8
  284. Same as /, but search backwards.
  285. X.Ip u 8
  286. Unsubscribe from the current newsgroup.
  287. X.Ip "l string" 8
  288. List newsgroups not subscribed to which contain the string specified.
  289. X.Ip L 8 13v
  290. Lists the current state of the
  291. X.IR .newsrc ,
  292. along with status information.
  293. X.Sp
  294. X.nf
  295. X    \h'|0.5i'Status    \h'|2i'Meaning
  296. X    \h'|0.5i'<number>  \h'|2i'Count of unread articles in newsgroup.
  297. X    \h'|0.5i'READ      \h'|2i'No unread articles in newsgroup.
  298. X    \h'|0.5i'UNSUB     \h'|2i'Unsubscribed newsgroup.
  299. X    \h'|0.5i'BOGUS     \h'|2i'Bogus newsgroup.
  300. X    \h'|0.5i'JUNK      \h'|2i'Ignored line in .newsrc
  301. X\h'|2i'(e.g. readnews \*(L"options\*(R" line).
  302. X.fi
  303. X.Sp
  304. X(A bogus newsgroup is one that is not in the list of active newsgroups
  305. in the active file, which on most systems is /usr/lib/news/active unless
  306. you use NNTP.)
  307. X.Ip "m name" 8
  308. Move the named newsgroup somewhere else in the
  309. X.IR .newsrc .
  310. If no name is given, the current newsgroup is moved.
  311. There are a number of ways to specify where you want the newsgroup\*(--type
  312. h for help when it asks where you want to put it.
  313. X.Ip c 8
  314. Catch up\*(--mark all unread articles in this newsgroup as read.
  315. X.Ip "o pattern" 8
  316. Only display those newsgroups whose name matches
  317. X.IR pattern .
  318. Patterns are the same as for the \*(L'/\*(R' command.
  319. Multiple patterns may be separated by spaces, just as on the
  320. command line.
  321. The restriction will remain in effect either until there are no articles
  322. left in the restricted set of newsgroups, or another restriction command
  323. is given.
  324. Since
  325. X.I pattern
  326. is optional, \*(L'o\*(R' by itself will remove the
  327. restriction.
  328. X.Ip "a pattern" 8
  329. Add new newsgroups matching
  330. X.IR pattern .
  331. Newsgroups which are already in your
  332. X.I .newsrc
  333. file, whether subscribed to or
  334. not, will not be listed.
  335. If any new newsgroups are found, you will be asked for each one whether
  336. you would like to add it.
  337. If you want to add all new newsgroups, you can
  338. type \*(L'Y\*(R' and they will be added the the end of the
  339. X.I .newsrc
  340. file and as groups you want to read.
  341. If you don't want to subscribe, all
  342. the new groups can be added by typing  \*(L'N\*(R'.
  343. After any new newsgroups have been added, the \*(L'a\*(R' command also
  344. restricts the current set of newsgroups just like the \*(L'o\*(R' command
  345. does.
  346. X.Ip & 8
  347. Print out the current status of command line switches and any newsgroup
  348. restrictions.
  349. X.Ip "&switch {switch}" 8
  350. Set additional command line switches.
  351. X.Ip && 8
  352. Print out the current macro definitions.
  353. X.Ip "&&keys commands" 8
  354. Define additional macros.
  355. X.Ip !command 8
  356. XEscape to a subshell.
  357. One exclamation mark (!) leaves you in your own news directory.
  358. A double exclamation mark (!!) leaves you in the spool
  359. directory for news, which on most systems is /usr/spool/news if NNTP is not being used.
  360. The environment variable SHELL will be used if defined.
  361. If
  362. X.I command
  363. is null, an interactive shell is started.
  364. X.Ip q 8
  365. Quit.
  366. X.Ip x 8
  367. Quit, restoring .newsrc to its state at startup of
  368. X.IR trn .
  369. The .newsrc you would have had if you had exited with \*(L'q\*(R' will be
  370. called .newnewsrc, in case you didn't really want to type \*(L'x\*(R'.
  371. X.Ip ^K 8
  372. XEdit the global KILL file.
  373. This is a file which contains /pattern/j commands (one per line) to be
  374. applied to every newsgroup as it is started up, that is, when it is
  375. selected on the newsgroup selection level.
  376. The purpose of a KILL file is to mark articles as read on the basis of some
  377. set of patterns.
  378. This saves considerable wear and tear on your \*(L'n\*(R' key.
  379. There is also a local KILL file for each newsgroup.
  380. Because of the overhead involved in searching for articles to kill, it is
  381. better if possible to use a local KILL file.
  382. Local KILL files are edited with a \*(L'^K\*(R' on the article selection level.
  383. There are also automatic ways of adding search commands to the local KILL
  384. file\*(--see the \*(L'K\*(R' and \*(L'T\*(R' commands, and the K search
  385. modifier on the article selection level.
  386. X.Sp
  387. If either of the environment variables VISUAL or EDITOR is set, the
  388. specified editor will be invoked; otherwise a default editor (normally vi(1))
  389. is invoked on the KILL file.
  390. X.Sh "Thread Selection Level"
  391. Most people who don't have all day to read news will want to enter a newsgroup
  392. by way of the thread selector.
  393. This is accomplished by using the \*(L'+\*(R'
  394. command at the newsgroup selection level.
  395. In fact, this may be the default command for entering a newsgroup, depending
  396. on how your version of
  397. X.I trn
  398. was configured (see the
  399. X.B \-X
  400. option for how to turn this default on or off).
  401. The thread selector displays a list of article subjects and (optionally)
  402. authors grouped into threads.
  403. A thread may contain multiple subjects if the subject changes as the
  404. discussion continues.
  405. Also displayed is a count of the number of unread articles in each thread.
  406. XEach thread is preceded by a letter or number that can be typed to select it.
  407. Selected threads are flagged with a \*(L'+\*(R'.
  408. X.Sp
  409. The default is to display the long mode of the thread selector.
  410. In this mode, all the authors of the articles in the thread are summarized,
  411. one per line (authors of multiple articles are listed only once).
  412. The medium display mode groups multiple authors onto the same line, so that
  413. more threads can be displayed at one time.
  414. The short display mode does not display any author names, and can display
  415. more characters in the subject.
  416. X.PP
  417. The following commands are available in the thread selector:
  418. X.Ip "a-z,0-9" 8
  419. Select the discussion thread by its letter or number;
  420. press again to deselect.
  421. By default the letters h, k, n, p, q, and y are omitted to allow them
  422. to be typed as commands.
  423. See the variable SELECTCHARS to customize this.
  424. X.Ip SP 8
  425. Perform the default command.
  426. This is usually > for most pages, and Z on the last page (although D and X
  427. are also quite popular).
  428. X.Ip CR 8
  429. Read the current thread (if none are selected) or all the selected threads.
  430. X.Ip "Z,TAB" 8
  431. Begin reading the selected threads.
  432. If none are are selected, read everything.
  433. X.Ip "y, \*(L'.\*(R'" 8
  434. Toggle the current thread's selection (the one under the cursor).
  435. X.Ip "k, \*(L',\*(R'" 8
  436. Mark the current thread as killed.
  437. X.Ip "m, \e" 8
  438. Unmark the current thread.
  439. X.Ip \- 8
  440. Set a range, as in 2 \- 5.
  441. Repeats the last marking action:  selected, unselected, killed, or unmarked.
  442. X.Ip @ 8
  443. Toggle all visible article selections.
  444. X.Ip < 8
  445. Go to previous page.
  446. X.Ip > 8
  447. Go to next page.
  448. X.Ip "p, [" 8
  449. Move up to the previous thread.
  450. X.Ip "n, ]" 8
  451. Move down to the next thread.
  452. X.Ip ^ 8
  453. Go to first page.
  454. X.Ip $ 8
  455. Go to last page.
  456. X.Ip X 8
  457. Mark all unselected articles as read and start reading.
  458. X.Ip J 8
  459. Mark all selected articles as read (useful after performing some action
  460. on them with the \*(L':\*(R' command).
  461. X.Ip D 8
  462. Mark unselected articles on the current page as read.
  463. Begin reading if articles are selected, otherwise go to the next page.
  464. X.Ip ^K 8
  465. XEdit the local KILL file for this newsgroup.
  466. A detailed description of KILL files is found in the Article Selection section.
  467. X.Ip ":command" 8
  468. XExecute a command upon all the selected threads and their articles.
  469. If no threads are selected, all threads with unread articles are affected.
  470. X.Sp
  471. Applicable commands include \*(L'+\*(R' and \*(L'-\*(R' (select and unselect
  472. thread), \*(L'T\*(R' (trash the thread into the local KILL file), \*(L't\*(R'
  473. X(display article tree), \*(L"s dest\*(R" (save article to a destination),
  474. X\*(L"e dir\*(R" (extract to directory), \*(L'E\*(R' (end partial uudecode),
  475. as well as: S, |, w, W, m, M, j, = and ','.
  476. X.Ip "/pattern" 8
  477. Scan all articles for a subject containing
  478. X.I pattern
  479. and select its thread.
  480. X.Ip "/pattern/modifiers:command{:command}" 8
  481. Apply the commands listed to articles matching the search command (possibly
  482. with h, a, r, or K modifiers).
  483. The default action, if no command is specified, is to select the parent
  484. thread of the matching article (the \*(L'+\*(R' command).
  485. See the section on Regular Expressions, and the description of pattern
  486. searching in the Article Selection section.
  487. X.Sp
  488. One example:  to scan all the unread articles looking for \*(L"topic\*(L"
  489. anywhere in the article and then select its thread and save the article to
  490. the files topic.1, topic.2, etc. use \*(L"/topic/a:+:s topic.%#\*(R".
  491. X.Ip N 8
  492. Go to the next newsgroup with unread news.
  493. X.Ip P 8
  494. Go to the previous newsgroup with unread news.
  495. X.Ip U 8
  496. Switch between selecting read/unread articles.
  497. X.Ip L 8
  498. Switch the current display mode between the long and medium modes
  499. X(with authors) and the short mode.
  500. X(See the
  501. X.B \-x
  502. option to select your favorite mode as the default.)
  503. X.Ip & 8
  504. Display or set the current status of command line switches.
  505. X.Ip && 8
  506. Display or set the current macro definitions.
  507. X.Ip !command 8
  508. XEscape to a subshell.
  509. X.Ip q 8
  510. Quit this group.
  511. X.Ip "ESC,+" 8
  512. Quit the thread selector (back) to the article level.
  513. X.Ip Q 8
  514. Quit the current newsgroup and return to the newsgroup selection prompt
  515. for this group.
  516. X.Sh "Article Selection Level"
  517. On the article selection level,
  518. X.I trn
  519. displays unread articles in thread sequence, reading each article and its
  520. replies before going on to another topic.
  521. If threads are disabled for a particular group, the default order is
  522. in numeric sequence (the order they arrived at your site) unless you
  523. use subject search (^N) to change the default order to be
  524. numerical order within each matching subject.
  525. X(The
  526. X.B \-S
  527. switch can be used to make subject search mode the default for unthreaded
  528. groups.)
  529. X.Sp
  530. On the article selection level you are
  531. X.I not
  532. asked whether you want to read an article before the article is displayed;
  533. rather,
  534. X.I trn
  535. simply displays the first page (or portion of a page, at low baud rates) of the
  536. article and asks if you want to continue.
  537. The normal article selection prompt comes at the END of the article
  538. X(though article selection commands can be given from within the middle
  539. of the article (the pager level) also).
  540. The prompt at the end of an article looks like this:
  541. X.Sp 
  542. XEnd of article 248 (of 257)\*(--what next? [npq]
  543. X.Sp
  544. The following are the options at this point:
  545. X.Ip n,SP 8
  546. Scan forward for next unread article.
  547. X(Note: the \*(L'n\*(R' (next) command when typed at the end of an article
  548. does not mark the article as read, since an article is automaticaly marked
  549. as read after the last line of it is printed.
  550. It is therefore possible to type a sequence such as \*(L'mn\*(R' and leave
  551. the article marked as unread.
  552. The fact that an article is marked as read by typing n, N, ^N, e, s, S, |,
  553. w, or W within the MIDDLE of the article is in fact a special case.)
  554. X.Ip N 8
  555. Go to the next article.
  556. X.Ip ^N 8
  557. Scan forward for the next article with the same subject.
  558. If the group is unthreaded this also makes subject search mode (^N)
  559. the default.
  560. X.Ip p 8
  561. Scan backward for previous unread article.
  562. If there is none, stay at the current article.
  563. X.Ip P 8
  564. Go to the previous article.
  565. X.Ip \- 8
  566. Go to the previously displayed article (regardless of whether that article
  567. is before or after this article in the normal sequence).
  568. X.Ip ^P 8
  569. Scan backward for the previous article with the same subject.
  570. Makes subject search mode (^N) the default if the group is unthreaded.
  571. X.Ip "<,>" 8
  572. Browse the previous/next selected thread.
  573. If no selections have been made, all the threads that had unread news when
  574. you entered the newsgroup (or last left the thread selector) are treated
  575. as selected.
  576. XEntering an empty newsgroup makes all the already-read threads available
  577. for browsing.
  578. X.Ip "[,]" 8
  579. Proceed to the left/right in the article tree.
  580. Visits already-read articles as well as empty nodes.
  581. If you attempt to go past the left/right edge of the tree, you are advanced
  582. to the previous/next line if available.
  583. X.Ip "{,}" 8
  584. Go to the root/leaf of the article tree, even if the node is
  585. already read or empty.
  586. Proceeds to the very first/last node if you're already at a root/leaf in
  587. a multi-root thread.
  588. X.Ip t 8
  589. Display the entire article tree and all its associated subjects.
  590. If the group is not currently threaded, it will be turned on and
  591. processed as needed.
  592. X.Ip ^R 8
  593. Restart the current article.
  594. X.Ip v 8
  595. Restart the current article verbosely, displaying the entire header.
  596. X.Ip ^L 8
  597. Refresh the screen.
  598. X.Ip ^X 8
  599. Restart the current article, and decrypt as a rot13 message.
  600. X.Ip X 8
  601. Refresh the screen, and decrypt as a rot13 message.
  602. X.Ip b 8
  603. Back up one page.
  604. X.Ip q 8
  605. Quit this newsgroup and go back to the newsgroup selection level.
  606. X.Ip ^ 8
  607. Go to the first unread article.
  608. X.Ip $ 8
  609. Go to the last article (actually, one past the last article).
  610. X.Ip "number" 8
  611. Go to the numbered article.
  612. X.Ip "range{,range}:command{:command}" 8
  613. Apply a set of commands to a set of articles.
  614. A range consists of either <article number> or
  615. X<article\ number>\-<article\ number>.
  616. A dot \*(L'.\*(R' represents the current article, and a dollar
  617. sign \*(L'$\*(R' represents the last article.
  618. X.Sp
  619. Applicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
  620. X(delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
  621. X(save to a destination), \*(L"e dir"\*(R" (extract to directory),
  622. X\&\*(L"!command\*(R" (shell escape), \*(L"=\*(R" (print the subject),
  623. X\&\*(L'T\*(R' (trash the thread into the local KILL file), \*(L'+\*(R'
  624. X(select the thread), \*(L'-\*(R' (deselect the thread), \*(L'C\*(R'
  625. X(cancel), as well as S, |, w, W, and t.
  626. X.Ip ":command" 8
  627. Apply a command to all selected threads and their articles.
  628. If no threads are selected, apply the command to all the unread threads.
  629. XFor applicable commands, see the discussion above for the range command.
  630. X.Ip j 8
  631. Junk the current article\*(--mark it as read.
  632. If this command is used from within an article, you are left at the end of
  633. the article, unlike \*(L'n\*(R', which looks for the next article.
  634. X.Ip m 8
  635. Mark the current article as still unread.
  636. X(If you are in subject search mode you probably want to use M instead of m.
  637. Otherwise the current article may be selected as the beginning of the next
  638. subject thread.)
  639. X.Ip M 8
  640. Mark the current article as still unread, but not until the newsgroup
  641. is exited.
  642. Until then, the current article will be marked as read.
  643. This is useful for returning to an article in another session, or in another
  644. newsgroup.
  645. X.Ip /pattern 8
  646. Scan forward for article containing
  647. X.I pattern
  648. in the subject.
  649. See the Regular Expressions section.
  650. Together with the escape substitution facility described later, it becomes
  651. easy to search for various attributes of the current article, such as
  652. subject, article ID, author name, etc.
  653. The previous pattern can be recalled with \*(L"<esc>/\*(R".
  654. If
  655. X.I pattern
  656. is omitted, the previous pattern is assumed.
  657. X.Ip /pattern/h 8
  658. Scan forward for article containing
  659. X.I pattern
  660. in the header.
  661. X.Ip /pattern/a 8
  662. Scan forward for article containing
  663. X.I pattern
  664. anywhere in article.
  665. X.Ip /pattern/r 8
  666. Scan read articles also.
  667. X.Ip /pattern/c 8
  668. Make search case sensitive.
  669. Ordinarily upper- and lower-case are considered the same.
  670. X.Ip "/pattern/modifiers:command{:command}" 8
  671. Apply the commands listed to articles matching the search command (possibly
  672. with h, a, or r modifiers).
  673. Applicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
  674. X(delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
  675. X(save to a destination), \*(L"e dir"\*(R" (extract to directory),
  676. X\&\*(L"!command\*(R" (shell escape), \*(L"=\*(R" (print the subject),
  677. X\&\*(L'T\*(R' (trash the associated thread and put it in the local KILL
  678. file), \*(L'+\*(R' (select the associated thread), \*(L'-\*(R' deselect
  679. the associated thread), and \*(L'C\*(R' (cancel).
  680. If the first command is \*(L'm\*(R' or \*(L'M\*(R', modifier r is assumed.
  681. A K may be included in the modifiers (not the commands) to cause the
  682. entire command (sans K) to be saved to the local KILL file, where it will
  683. be applied to every article that shows up in the newsgroup.
  684. X.Sp
  685. XFor example, to save all articles in a given newsgroup to the line printer
  686. and mark them read, use \*(L"/^/\||\|lpr:j\*(R".
  687. If you type \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the
  688. newsgroup.
  689. X.Ip ?pattern 8
  690. Scan backward for article containing
  691. X.I pattern
  692. in the subject.
  693. May be modified as the forward search is: ?pattern?modifiers[:commands].
  694. It is likely that you will want an r modifier when scanning backward.
  695. X.Ip k 8
  696. Mark as read all articles with the same subject as the current article.
  697. X(Note: there is no single character command to temporarily mark as read (M
  698. command) articles matching the current subject.
  699. That can be done with \*(L"/<esc>s/M\*(R", however.)
  700. X.Ip \, 8
  701. Mark the current article and all its replies as read.
  702. X.Ip J 8
  703. Junk all the articles in the thread, even if it contains multiple subjects.
  704. X.Ip K 8
  705. Do the same as the k command, but also add a line to the local KILL file for
  706. this newsgroup to kill this subject every time the newsgroup is started up.
  707. XFor a discussion of KILL files, see the \*(L'^K\*(R' command below.
  708. See also the K modifier on searches above.
  709. X.Ip T 8
  710. Kill the current thread, and also add a line to the local KILL file for
  711. this newsgroup to kill new articles attached to this thread every time the
  712. newsgroup is started up.
  713. X.Ip ^K 8
  714. XEdit the local KILL file for this newsgroup.
  715. XEach line of the KILL file should be a subject-killing command of the
  716. form /pattern/j or a thread killing command of the form T<number>.
  717. The thread killing commands are usually followed by a comment to let
  718. you know the primary subject of the numbered thread being killed.
  719. The first line in the KILL file has the form \*(L"THRU <number>\*(R",
  720. which tells
  721. X.I trn
  722. the maximum article number that the KILL file has been applied to.
  723. X(You may delete the THRU line to force a rescan of current articles.)
  724. You may also have reason to use the m, h, or a modifiers.
  725. Be careful with the M modifier in a kill file\*(--there are more efficient
  726. ways to never read an article.
  727. You might have reason to use it if a particular series of articles is posted
  728. to multiple newsgroups.
  729. In this case, M would force you to view the article in a different newsgroup.
  730. X.Sp
  731. To see only newgroup articles in the control newsgroup, for instance, you
  732. might put
  733. X.Sp
  734. X/^/j
  735. X.br
  736. X/newgroup/m
  737. X.Sp
  738. which kills all subjects not containing \*(L"newgroup\*(R".
  739. You can add lines automatically via the K command and K search modifiers,
  740. but editing is the only way to remove lines.
  741. If either of the environment variables VISUAL or EDITOR is set, the
  742. specified editor will be invoked; otherwise a default editor (normally vi)
  743. is invoked on the KILL file.
  744. X.Sp
  745. The KILL file may also contain switch setting lines beginning with \*(L'&\*(R'.
  746. Additionally, any line beginning with \*(L'X\*(R' is executed on exit
  747. from the newsgroup rather than on entrance.
  748. This can be used to set switches back to a default value.
  749. One use for this capability is to set your save directory to a custom value
  750. upon entry to a newsgroup and set it back on exit using the \-ESAVEDIR option.
  751. See also the
  752. X.B \-/
  753. option for another solution to multiple save directories without using KILL
  754. files.
  755. X.Ip r 8
  756. Reply through net mail.
  757. The environment variables MAILPOSTER and MAILHEADER may be used to modify
  758. the mailing behavior of
  759. X.I trn
  760. X(see environment section).
  761. If on a nonexistent article such as the \*(L"End of newsgroup\*(R"
  762. pseudo-article
  763. X(which you can get to with a \*(L'$\*(R' command), invokes the mailer to
  764. nobody in particular.
  765. X.Ip R 8
  766. Reply, including the current article in the header file generated.
  767. X(See \*(L'F\*(R' command below).
  768. The YOUSAID environment variable controls the format of the attribution line.
  769. X.Ip f 8
  770. Submit a followup article.
  771. If on a nonexistent article such as the \*(L"End of newsgroup\*(R"
  772. pseudo-article
  773. X(which you can get to with a \*(L'$\*(R' command), posts an original
  774. article (basenote).
  775. X.Ip F 8
  776. Submit a followup article, and include the old article, with lines prefixed
  777. either by \*(L">\*(R" or by the argument to a
  778. X.B \-F
  779. switch.
  780. X.I Trn
  781. will attempt to provide an attribution line in front of the quoted article,
  782. generated from the From: line of the article.
  783. Unfortunately, the From: line doesn't always contain the right name; you
  784. should double check it against the signature and change it if necessary,
  785. or you may have to apologize for quoting the wrong person.
  786. The environment variables NEWSPOSTER, NEWSHEADER and ATTRIBUTION may be
  787. used to modify the posting behavior of
  788. X.I trn
  789. X(see environment section).
  790. X.Sp
  791. If you are starting a new subject, move to the end of the newsgroup
  792. with the \*(L'$\*(R' command before pressing \*(L'f\*(R'.
  793. Otherwise you may have to do a lot of header editing, including 
  794. X.I "removing the References line"
  795. X-- this is IMPORTANT to remember ONLY when starting a new subject.
  796. It is much simpler to remember \*(L"$f\*(R" for new subjects, and to
  797. allways leave the References line alone.
  798. X.Ip C 8
  799. Cancel the current article, but only if you are the contributor or superuser.
  800. X.Ip z 8
  801. Supersede the current article, but only if you are the contributor.
  802. X.Ip c 8
  803. Catch up in this newsgroup; i.e., mark all articles as read.
  804. X.Ip U 8
  805. Mark some or all articles as unread.
  806. You can choose to mark the current thread, sub-thread (the current article
  807. and its replies), all the articles, or start up the thread selector
  808. to choose specific threads to set unread.
  809. X.Ip u 8
  810. Unsubscribe from this newsgroup.
  811. X.Ip "s destination" 8
  812. Save to a filename or pipe using sh.
  813. If the first character of the destination is a vertical bar, the rest of
  814. the command is considered a shell command to which the article is passed
  815. through standard input.
  816. The command is subject to filename expansion.
  817. X(See also the environment variable PIPESAVER.)
  818. If the destination does not begin with a vertical bar, the rest of the
  819. command is assumed to be a filename of some sort.
  820. An initial tilde \*(L'~\*(R' will be translated to the name of the home
  821. directory, and an initial environment variable substitution is also allowed.
  822. If only a directory name is specified, the environment variable SAVENAME
  823. is used to generate the actual name.
  824. If a non-absolute filename is specified, the environment variable
  825. SAVEDIR will be used to generate the actual directory.
  826. If nothing is specified, then obviously both variables will be used.
  827. Since the current directory for
  828. X.I trn
  829. while doing a save command is your
  830. private news directory, typing \*(L"s ./filename\*(R" will force the file
  831. to your news directory.
  832. Save commands are also run through % interpretation, so that you can
  833. enter \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
  834. X.IR trn ,
  835. and \*(L"s %t\*(R" to save to a filename consisting of the Internet address
  836. of the sender.
  837. X.Sp
  838. After generating the full pathname of the file to save to,
  839. X.I trn
  840. determines if the file exists already, and if so, appends to it.
  841. X.I trn
  842. will attempt to determine if an existing file is a mailbox or a normal file,
  843. and save the article in the same format.
  844. If the output file does not yet exist,
  845. X.I trn
  846. will by default ask you which format you want, or you can make it skip the
  847. question with either the
  848. X.B \-M
  849. or
  850. X.B \-N
  851. switch.
  852. If the article is to be saved in mailbox format, the command to do so is
  853. generated from the environment variable MBOXSAVER.
  854. Otherwise, NORMSAVER is used.
  855. X.Ip "S destination" 8
  856. Save to a filename or pipe using a preferred shell, such as csh.
  857. Which shell is used depends first on what you have the environment variable
  858. SHELL set to, and in the absence of that, on what your news administrator
  859. set for the preferred shell when he or she installed
  860. X.IR trn .
  861. X.Ip "| command" 8
  862. Shorthand for \*(L"s | command\*(R".
  863. X.Ip "w destination" 8
  864. The same as \*(L"s destination\*(R", but saves without the header.
  865. X.Ip "W destination" 8
  866. The same as \*(L"S destination\*(R", but saves without the header.
  867. X.Ip "e directory" 8
  868. XExtract a shell archive or uuencoded binary to the designated directory.
  869. The article is first scanned to try discover what type of data is
  870. encapsulated.
  871. If a \*(L"cut here\*(R" line is found, the first non-blank line after it
  872. must be either the start of a shar header, or the \*(L"begin\*(R"
  873. or \*(L"table\*(R" line of a uuencoded binary.
  874. The default for extracting shars is to send the data portion of the file
  875. to /bin/sh, but that can be overridden with the UNSHAR variable (see the
  876. XENVIRONMENT section).
  877. Uudecoding is done internally by a decoder that can handle the data
  878. being split up over multiple articles, and extracted one piece at a time.
  879. To decode a multi-article file, either execute the \*(L'e\*(R'
  880. command in each article in sequence, use an article range to execute the
  881. command, or use the \*(L":e\*(R" command to repeat the command for each of the
  882. currently selected articles.
  883. When the \*(L'e\*(R' command is not followed by any arguments, it will
  884. repeat the arguments from the last extraction.
  885. All directory specifications are relative to the value of SAVEDIR, so you
  886. can use the command \*(L"e .\*(R" to force an extraction to SAVEDIR itself.
  887. If a uudecoding is in progress (i.e. the last piece wasn't extracted yet)
  888. and you exit the group, the partial file will be removed.
  889. This also occurs if you start to extract a new uuencoded file before the
  890. previous one was finished.
  891. See also the \*(L'E\*(R' command for ending a multi-part uudecoding
  892. manually.
  893. X.Sp
  894. There is one special case that is handled differently:  if the first file in a
  895. recognizable shar file is a uuencoded binary that was packed with lines
  896. starting with an \*(L'X\*(R', we will not unshar the file but instead
  897. uudecode it.
  898. If this causes problems, you can override the default extraction method
  899. by following the directory with an explicit command to execute, as
  900. described below.
  901. X.Ip "e directory|command" 8
  902. This form of the \*(L'e\*(R' command allows you to extract other data
  903. formats than shar or uuencoded files or to override the decisions made
  904. by the automatic extraction selection described above.
  905. In normal operation, all data following what we recognize as
  906. a \*(L"cut here\*(R" line will be sent to the specified command.
  907. Additionally, the distinctive beginning of a shell archive is also recognized
  908. without a preceding cut line.
  909. When the command is run, the default directory will be set to the
  910. specified directory, or the value
  911. of SAVEDIR if unspecified.
  912. XEntering the \*(L'e\*(R' command without arguments will repeat your
  913. previous extract command.
  914. You can use the command \*(L"e dir|\*(R" to extract to a new directory
  915. using the previously-specified command.
  916. X.Ip E 8
  917. This command ends any multi-part uuencoded file extraction that you began,
  918. but are unable (or unwilling) to complete.
  919. The partially extracted file is removed.
  920. X.Ip & 8
  921. Print out the current status of command line switches.
  922. X.Ip "&switch {switch}" 8
  923. Set additional command line switches.
  924. X.Ip && 8
  925. Print out current macro definitions.
  926. X.Ip "&&keys commands" 8
  927. Define an additional macro.
  928. X.Ip !command 8
  929. XEscape to a subshell.
  930. One exclamation mark (!) leaves you in your own news directory.
  931. A double exclamation mark (!!) leaves you in the spool
  932. directory of the current newsgroup.
  933. The environment variable SHELL will be used if defined.
  934. If
  935. X.I command
  936. is null, an interactive shell is started.
  937. X.Sp
  938. You can use escape key substitutions described later to get to many
  939. run-time values.
  940. The command is also run through % interpretation, in case it is being called
  941. from a range or search command.
  942. X.Ip \+ 8
  943. Start the thread selector.
  944. If the newsgroup is unthreaded, the subject lister is called instead.
  945. X.Ip = 8
  946. List subjects of unread articles.
  947. X.Ip # 8
  948. Print last article number.
  949. X.Sh "Pager Level"
  950. At the pager level (within an article), the prompt looks like this:
  951. X.Sp
  952. X\*(--MORE\*(--(17%)
  953. X.Sp
  954. and a number of commands may be given:
  955. X.Ip SP 8
  956. Display next page.
  957. X.Ip x 8
  958. Display next page and decrypt as a rot13 message.
  959. X.Ip d 8
  960. Display half a page more.
  961. X.Ip CR 8
  962. Display one more line.
  963. X.Ip q 8
  964. Go to the end of the current article (don't mark it either read or unread).
  965. Leaves you at the \*(L"What next?\*(R" prompt.
  966. X.Ip j 8
  967. Junk the current article.
  968. Mark it read and go to the end of the article.
  969. X.Ip ^L 8
  970. Refresh the screen.
  971. X.Ip X 8
  972. Refresh the screen and decrypt as a rot13 message.
  973. X.Ip b 8
  974. Back up one page.
  975. X.Ip t 8
  976. Display the entire article tree, including its associated subjects, and
  977. continue reading.
  978. If the group is not currently threaded, it will be turned on and
  979. processed as needed.
  980. X.Ip gpattern 8
  981. Goto (search forward for)
  982. X.I pattern
  983. within current article.
  984. Note that there is no space between the command and the pattern.
  985. If the pattern is found, the page containing the pattern will be displayed.
  986. Where on the page the line matching the pattern goes depends on the value
  987. of the
  988. X.B \-g
  989. switch.
  990. By default the matched line goes at the top of the screen.
  991. X.Ip G 8
  992. Search for g pattern again.
  993. X.Ip ^G 8
  994. This is a special version of the \*(L'g\*(R' command that is for skipping
  995. articles in a digest.
  996. It is equivalent to setting \*(L"\-g4\*(R" and then executing the command
  997. X\*(L"g^Subject:\*(R".
  998. X.Ip TAB 8
  999. This is another special version of the \*(L'g\*(R' command that is for
  1000. skipping inclusions of older articles.
  1001. It is equivalent to setting \*(L"\-g4\*(R" and then executing the command
  1002. X\*(L"g^[^c]\*(R", where \fIc\fR is the first character of the last line
  1003. on the screen.
  1004. It searches for the first line that doesn't begin with the same character
  1005. as the last line on the screen.
  1006. X.Ip !command 8
  1007. XEscape to a subshell.
  1008. X.PP
  1009. The following commands skip the rest of the current article, then behave just
  1010. as if typed to the \*(L"What next?\*(R" prompt at the end of the article.
  1011. See the documentation at the article selection level for these commands.
  1012. X.Sp    
  1013. X    # $ & / = ? c C f F k K T ^K J , m M r R ^R u U v Y ^
  1014. X.br
  1015. X    p P ^P - < > [ ] { } number
  1016. X.br
  1017. X    range{,range} command{:command}
  1018. X.Sp
  1019. The following commands also skip to the end of the article, but have the
  1020. additional effect of marking the current article as read:
  1021. X.Sp
  1022. X    n N ^N e s S | w W
  1023. X.Sp
  1024. X.Sh "Miscellaneous facts about commands"
  1025. An \*(L'n\*(R' typed at either the \*(L"Last newsgroup\*(R" prompt or a
  1026. X\*(L"Last article\*(R" prompt will cycle back to the top of the newsgroup
  1027. or article list, whereas a \*(L'q\*(R' will quit the level.
  1028. X(Note that \*(L'n\*(R' does not mean \*(L"no\*(R", but rather
  1029. X\*(L"next\*(R".)
  1030. A space will of course do whatever is shown as the
  1031. default, which will vary depending on whether
  1032. X.I trn
  1033. thinks you have more articles or newsgroups to read.
  1034. X.PP
  1035. The \*(L'b\*(R' (backup page) command may be repeated until the beginning of
  1036. the article is reached.
  1037. If
  1038. X.I trn
  1039. is suspended (via a ^Z), then when the job is resumed, a refresh (^L) will
  1040. automatically be done (Berkeley-type systems only).
  1041. If you type a command such as \*(L'!\*(R' or \*(L's\*(R' which takes you
  1042. from the middle of the article to the end, you can always get back into the
  1043. middle by typing \*(L'^L\*(R'.
  1044. X.PP
  1045. In multi-character commands such as \*(L'!\*(R', \*(L's\*(R', \*(L'/\*(R',
  1046. etc, you can interpolate various run-time values by typing escape and a
  1047. character.
  1048. To find out what you can interpolate, type escape and \*(L'h\*(R', or check
  1049. out the single character % substitutions for environment variables in the
  1050. Interpretation and Interpolation section, which are the same.
  1051. Additionally, typing a double escape will cause any % substitutions in the
  1052. string already typed in to be expanded.
  1053. X.Sh "The Tree Display"
  1054. When reading a threaded newsgroup,
  1055. X.I trn
  1056. displays a character representation of the article tree in the upper right
  1057. corner of the header.
  1058. XFor example, consider the following display:
  1059. X.Sp
  1060. X.nf
  1061. X    (1)+-(1)--(\fI2\fP)--\fI[2]\fP
  1062. X       |-(1)+-[3]
  1063. X       |    \\-[1]
  1064. X       \\-(1)+-[1]--[1]
  1065. X            \\-[1]
  1066. X.fi
  1067. X.Sp
  1068. This tree represents an initial article that has three direct replies
  1069. X(the second column with three (1)'s).
  1070. XEach reply has further replies branching off from them.
  1071. In two cases the subject line was altered in the reply, as indicated
  1072. by the increasing numbers.
  1073. When there is only one subject associated with a thread, all the nodes
  1074. are marked with the number 1.
  1075. When the first subject change arrives, it is marked with the number 2,
  1076. and so on.
  1077. If you were to look at this thread in the thread selector, the three
  1078. subjects associated with it would be listed in the same order as the
  1079. ascending digits.
  1080. In those rare cases where more than 9 subjects are associated with each
  1081. thread, the nodes are marked with the letters A-Z, and then by a-z.
  1082. The articles that have already been read are enclosed in ()'s.
  1083. Unread articles are displayed in []'s.
  1084. The currently displayed article has its entire node highlighted in the
  1085. display.
  1086. The previously displayed article has only its number highlighted.
  1087. X.Sh "Options"
  1088. X.I Trn
  1089. has a nice set of options to allow you to tailor the interaction
  1090. to your liking.
  1091. X(You might like to know that the author swears by
  1092. X\*(L"\-x6ls \-e \+m \-S -XX -N\*(R".)
  1093. These options may be set on the command line, via the TRNINIT
  1094. environment variable, via a file pointed to by the TRNINIT variable, or
  1095. from within
  1096. X.I trn
  1097. via the & command.
  1098. Options may generally be unset by typing \*(L"+switch\*(R".
  1099. Options include:
  1100. X.TP 5
  1101. X.B \-a
  1102. causes trn to always thread a group that doesn't have a pre-created
  1103. thread file.
  1104. Without this option you have to toggle each group with the \*(L't\*(R'
  1105. command at the newsgroup prompt to force it to be read threaded even
  1106. if no thread file for the group exists.
  1107. X.TP 5
  1108. X.B \-c
  1109. checks for news without reading news.
  1110. If a list of newsgroups is given on the command line, only those newsgroups
  1111. will be checked; otherwise all subscribed-to newsgroups are checked.
  1112. Whenever the
  1113. X.B \-c
  1114. switch is specified, a non-zero exit status from
  1115. X.I trn
  1116. means that there is unread news in one of the checked newsgroups.
  1117. The
  1118. X.B \-c
  1119. switch does not disable the printing of newsgroups with unread news;
  1120. this is controlled by the
  1121. X.B \-s
  1122. switch.
  1123. X(The
  1124. X.B \-c
  1125. switch is not meaningful when given via the & command.)
  1126. X.TP 5
  1127. X.B \-C<number>
  1128. tells
  1129. X.I trn
  1130. how often to checkpoint the
  1131. X.IR .newsrc ,
  1132. in articles read.
  1133. Actually, this number says when to start thinking about doing a checkpoint
  1134. if the situation is right.
  1135. If a reasonable checkpointing situation doesn't arise within 10 more
  1136. articles, the
  1137. X.I .newsrc
  1138. is checkpointed willy-nilly.
  1139. X.TP 5
  1140. X.B \-d<directory name>
  1141. sets the default save directory to something other than ~/News.
  1142. The directory name will be globbed (via csh) if necessary (and if possible).
  1143. Articles saved by
  1144. X.I trn
  1145. may be placed in the save directory or in a subdirectory thereof depending
  1146. on the command that you give and the state of the environment variables
  1147. SAVEDIR and SAVENAME.
  1148. Any KILL files (see the K command in the Article Selection section)
  1149. also reside in this directory and its subdirectories, by default.
  1150. In addition, shell escapes leave you in this directory.
  1151. X.TP 5
  1152. X.B \-D<flags>
  1153. enables debugging output.
  1154. See common.h for flag values.
  1155. Warning: normally
  1156. X.I trn
  1157. attempts to restore your
  1158. X.I .newsrc
  1159. when an unexpected signal or internal error occurs.
  1160. This is disabled when any debugging flags are set.
  1161. X.TP 5
  1162. X.B \-e
  1163. causes each page within an article to be started at the top of the screen,
  1164. not just the first page.
  1165. X(It is similar to the
  1166. X.B \-c
  1167. switch of
  1168. X.IR more (1).)
  1169. You never have to read scrolling text with this switch.
  1170. This is helpful especially at certain baud rates because you can start reading
  1171. the top of the next page without waiting for the whole page to be printed.
  1172. It works nicely in conjunction with the
  1173. X.B \-m
  1174. switch, especially if you use half-intensity for your highlight mode.
  1175. See also the
  1176. X.B \-L
  1177. switch.
  1178. X.TP 5
  1179. X.B \-E<name>=<val>
  1180. sets the environment variable <name> to the value specified.
  1181. Within
  1182. X.IR trn ,
  1183. X\*(L"&\-ESAVENAME=%t\*(R" is similar to \*(L"setenv SAVENAME '%t'\*(R" in
  1184. X.IR csh ,
  1185. or \*(L"SAVENAME='%t'; export SAVENAME\*(R" in
  1186. X.IR sh .
  1187. Any environment variables set with
  1188. X.B \-E
  1189. will be inherited by subprocesses of
  1190. X.IR trn .
  1191. X.TP 5
  1192. X.B \-F<string>
  1193. sets the prefix string for the \*(L'F\*(R' followup command to use in
  1194. prefixing each line of the quoted article.
  1195. XFor example, \*(L"\-F<tab>\*(R" inserts a tab on the front of each line
  1196. X(which will cause long lines to wrap around, unfortunately),
  1197. X\*(L"\-F>>>>\*(R" inserts \*(L">>>>\*(R" on every line, and
  1198. X\*(L"\-F\*(R" by itself causes nothing to be inserted, in case you want to
  1199. reformat the text, for instance.
  1200. The initial default prefix is \*(L">\*(R".
  1201. X.TP 5
  1202. X.B \-g<line>
  1203. tells
  1204. X.I trn
  1205. which line of the screen you want searched-for strings to show up on when
  1206. you search with the \*(L'g\*(R' command within an article.
  1207. The lines are numbered starting with 1.
  1208. The initial default is \*(L"\-g1\*(R", meaning the first line of the screen.
  1209. Setting the line to less than 1 or more than the number of lines on the screen
  1210. will set it to the last line of the screen.
  1211. X.TP 5
  1212. X.B \-h<string>
  1213. hides (disables the printing of) all header lines beginning with
  1214. X.I string.
  1215. XFor instance, \-hexp will disable the printing of the \*(L"Expires:\*(R" line.
  1216. Case is insignificant.
  1217. If <string> is null, all header lines except Subject are hidden, and you
  1218. may then use
  1219. X.B +h
  1220. to select those lines you want to see.
  1221. You may wish to use the baud-rate switch modifier below to hide more lines
  1222. at lower baud rates.
  1223. X.TP 5
  1224. X.B \-H<string>
  1225. works just like
  1226. X.B \-h
  1227. except that instead of setting the hiding flag for a header line, it sets
  1228. the magic flag for that header line.
  1229. Certain header lines have magic behavior that can be controlled this way.
  1230. At present, the following actions are caused by the flag for the particular
  1231. line:
  1232. the Date line prints the date in local time if the group is threaded;
  1233. the From line will only print the commented portion of the user name;
  1234. the Newsgroups line will only print when there are multiple newsgroups;
  1235. the Subject line will be underlined and (when threaded) the
  1236. keyword \*(L'Subject:\*(R' is replaced by its subject number (e.g. [1]);
  1237. and the Expires line will always be suppressed if there is nothing on it.
  1238. In fact, all of these actions are the default, and you must use
  1239. X.B +H
  1240. to undo them.
  1241. X.TP 5
  1242. X.B \-i=<number>
  1243. specifies how long (in lines) to consider the initial page of an
  1244. article\*(--normally this is determined automatically depending on baud rate.
  1245. X(Note that an entire article header will always be printed regardless of the
  1246. specified initial page length.
  1247. If you are working at low baud rate and wish to reduce the size of the
  1248. headers, you may hide certain header lines with the
  1249. X.B \(bsh
  1250. switch.)
  1251. X.TP 5
  1252. X.B \-l
  1253. disables the clearing of the screen at the beginning of each
  1254. article, in case you have a bizarre terminal.
  1255. X.TP 5
  1256. X.B \-L
  1257. tells
  1258. X.I trn
  1259. to leave information on the screen as long as possible by not blanking
  1260. the screen between pages, and by using clear to end-of-line.
  1261. X(The
  1262. X.IR more (1)
  1263. program does this.)
  1264. This feature works only if you have the requisite termcap
  1265. capabilities.
  1266. The switch has no effect unless the
  1267. X.B \-e
  1268. switch is set.
  1269. X.TP 5
  1270. X.B \-m=<mode>
  1271. enables the marking of the last line of the previous page
  1272. printed, to help the user see where to continue reading.
  1273. This is most helpful when less than a full page is going to be displayed.
  1274. It may also be used in conjunction with the
  1275. X.B \-e
  1276. switch, in which case the page is erased, and the first line (which is
  1277. the last line of the previous page) is highlighted.
  1278. If
  1279. X.B \-m=s
  1280. is specified, the standout mode will be used, but if
  1281. X.B \-m=u
  1282. is specified, underlining will be used.
  1283. If neither
  1284. X.B =s
  1285. or
  1286. X.B =u
  1287. is specified, standout is the default.
  1288. Use
  1289. X.B +m
  1290. to disable highlighting.
  1291. X.TP 5
  1292. X.B \-M
  1293. forces mailbox format in creating new save files.
  1294. Ordinarily you are asked which format you want.
  1295. X.TP 5
  1296. X.B \-N
  1297. forces normal (non-mailbox) format in creating new save files.
  1298. Ordinarily you are asked which format you want.
  1299. X.TP 5
  1300. X.B \-o
  1301. will act like old versions of trn and not chase xrefs when junking
  1302. articles via thread commands.
  1303. Using
  1304. X.B \-o2
  1305. will also disable the database lookup for all article-junking commands.
  1306. This slows down the junking of non-xrefed articles, but enables trn 2.\|0
  1307. to be run using a database from a pre-2.\|0 mthreads.
  1308. X.TP 5
  1309. X.B \-q
  1310. bypasses the automatic check for new newsgroups when starting 
  1311. X.IR trn .
  1312. X.TP 5
  1313. X.B \-r
  1314. causes
  1315. X.I trn
  1316. to restart in the last newsgroup read during a previous session with
  1317. X.IR trn .
  1318. It is equivalent to starting up normally and then getting to the newsgroup
  1319. with a g command.
  1320. X.TP 5
  1321. X.B \-s
  1322. with no argument suppresses the initial listing of newsgroups with unread
  1323. news, whether
  1324. X.B \-c
  1325. is specified or not.
  1326. Thus
  1327. X.B \-c
  1328. and
  1329. X.B \-s
  1330. can be used together to test \*(L"silently\*(R" the status of news from
  1331. within your
  1332. X.I .login
  1333. file.
  1334. If
  1335. X.B \-s
  1336. is followed by a number, the initial listing is suppressed after that many
  1337. lines have been listed.
  1338. Presuming that you have your
  1339. X.I .newsrc
  1340. sorted into order of interest,
  1341. X.B \-s5
  1342. will tell you the 5 most interesting newsgroups that have unread news.
  1343. This is also a nice feature to use in your
  1344. X.I .login
  1345. file, since it not only tells you whether there is unread news, but also how
  1346. important the unread news is, without having to wade through the entire
  1347. list of unread newsgroups.
  1348. If no 
  1349. X.B \-s
  1350. switch is given 
  1351. X.B \-s5
  1352. is assumed, so just putting \*(L"rn \-c\*(R"
  1353. into your
  1354. X\&.login file is fine.
  1355. X.TP 5
  1356. X.B \-S<number>
  1357. causes
  1358. X.I trn
  1359. to enter subject search mode (^N) automatically whenever an unthreaded
  1360. newsgroup is
  1361. started up with <number> unread articles or more.
  1362. Additionally, it causes any \*(L'n\*(R' typed while in subject search mode
  1363. to be interpreted as \*(L'^N\*(R' instead.
  1364. X(To get back out of subject search mode, the best command is probably
  1365. X\&\*(L'^\*(R'.)
  1366. If <number> is omitted, 3 is assumed.
  1367. X.TP 5
  1368. X.B \-t
  1369. puts
  1370. X.I trn
  1371. into terse mode.
  1372. This is more cryptic but useful for low baud rates.
  1373. X(Note that your system administrator may have compiled
  1374. X.I trn
  1375. with either verbose or terse messages only to save memory.)
  1376. You may wish to use the baud-rate switch modifier below to enable terse mode
  1377. only at lower baud rates.
  1378. X.TP 5
  1379. X.B \-T
  1380. allows you to type ahead of rn.
  1381. Ordinarily rn will eat typeahead to prevent your autorepeating space bar from
  1382. doing a very frustrating thing when you accidentally hold it down.
  1383. If you don't have a repeating space bar, or you are working at low baud
  1384. rate, you can set this switch to prevent this behavior.
  1385. You may wish to use the baud-rate switch modifier below to disable typeahead
  1386. only at lower baud rates.
  1387. X.TP 5
  1388. X.B \-v
  1389. sets verification mode for commands.
  1390. When set, the command being executed is displayed to give some feedback that
  1391. the key has actually been typed.
  1392. Useful when the system is heavily loaded and you give a command that takes
  1393. a while to start up.
  1394. X.TP 5
  1395. X.B \-x<number><list>
  1396. XEnable the extended (threaded) features of
  1397. X.I trn
  1398. beyond the traditional
  1399. X.I rn
  1400. compatibility mode.
  1401. X(This may be the default on your system, use +x if you yearn for the good
  1402. ol' days.)
  1403. The <number> is the maximum number of article-tree lines (from 0 to 11)
  1404. you want displayed in your header.
  1405. Use the <list> to choose which thread selector modes you like (s \- short,
  1406. m \- medium, or l \- long), and in what order they are selected with the
  1407. X\&\*(L'L\*(R' command.
  1408. XFor example, use
  1409. X.B \-xls
  1410. to start with the long display mode and only switch between it and
  1411. the short mode.
  1412. You can omit either or both of the parameters, in which case a default of
  1413. X.B \-x6lsm
  1414. is assumed.
  1415. X.TP 5
  1416. X.B \-X<number><commands>
  1417. If you like using the thread selector, you'll probably want to use this
  1418. option to make the thread selector command (+) the default when a newsgroup
  1419. is started up with at least <number> unread articles.
  1420. X(Your installer may have chosen to make -X1 the default on your system.)
  1421. It is also used to select which commands you want to be the defaults while
  1422. using the thread selector.
  1423. XFor example,
  1424. X.B \-X2XD
  1425. will make the thread selector the default command for entering a newsgroup
  1426. with at least 2 unread articles, and set the default command for the LAST
  1427. page of the thread selector to be the
  1428. X.B X
  1429. command and the default command for all other pages to be the
  1430. X.B D
  1431. command.
  1432. XEither or both parameters can be omitted, as well as the second default
  1433. command (e.g.
  1434. X.B \-XX
  1435. would change the default newsgroup entry to use the selector and the default
  1436. command for the last page of the selector to be \*(L'X\*(R').
  1437. The default is
  1438. X.B \-X1Z>
  1439. if just
  1440. X.B \-X
  1441. is specified.
  1442. To set the default selector commands without affecting the default entry
  1443. into a newsgroup, specify a high number, like 9999.
  1444. X.TP 5
  1445. X.B \-/
  1446. sets SAVEDIR to \*(L"%p/%c\*(R" and SAVENAME to \*(L"%a\*(R", which means
  1447. that by default articles are saved in a subdirectory of your private news
  1448. directory corresponding to the name of the the current newsgroup, with the
  1449. filename being the article number.
  1450. X.B +/
  1451. sets SAVEDIR to \*(L"%p\*(R" and SAVENAME to \*(L"%^C\*(R", which by
  1452. default saves articles directly to your private news directory, with the
  1453. filename being the name of the current newsgroup, first letter capitalized.
  1454. X(Either
  1455. X.B +/
  1456. or
  1457. X.B \-/
  1458. may be default on your system, depending on the feelings of your news
  1459. administrator when he, she or it installed
  1460. X.IR trn .)
  1461. You may, of course, explicitly set SAVEDIR and SAVENAME to other values\*(--see
  1462. discussion in the environment section.
  1463. X.PP
  1464. Any switch may be selectively applied according to the current baud-rate.
  1465. Simply prefix the switch with +speed to apply the switch at that speed or
  1466. greater, and \%\-speed to apply the switch at that speed or less.
  1467. XExamples: \%\-1200\-hposted suppresses the Posted line at 1200 baud or less;
  1468. X\%+9600\-m enables marking at 9600 baud or more.
  1469. You can apply the modifier recursively to itself also: \%+300\-1200\-t sets
  1470. terse mode from 300 to 1200 baud.
  1471. X.PP
  1472. Similarly, switches may be selected based on terminal type:
  1473. X.Sp
  1474. X    \-=vt100+T        set +T on vt100
  1475. X.br
  1476. X    \-=tvi920\-ETERM=mytvi    get a special termcap entry
  1477. X.br
  1478. X    \-=tvi920\-ERNMACRO=%./.rnmac.tvi
  1479. X.br
  1480. X                set up special keymappings
  1481. X.br
  1482. X    +=paper\-v        set verify mode if not hardcopy
  1483. X.PP
  1484. Some switch arguments, such as environment variable values, may require
  1485. spaces in them.
  1486. Such spaces should be quoted via ", ', or \e in the conventional fashion,
  1487. even when passed via TRNINIT or the & command.
  1488. X.Sh "Regular Expressions"
  1489. The patterns used in article searching are regular expressions such as
  1490. those used by
  1491. X.IR ed (1).
  1492. In addition, \ew matches an alphanumeric character and \eW a nonalphanumeric.
  1493. Word boundaries may be matched by \eb, and non-boundaries by \eB.
  1494. The bracketing construct \e(\ ...\ \e) may also be used, and \edigit matches
  1495. the digit'th substring, where digit can range from 1 to 9.
  1496. X\e0 matches whatever the last bracket match matched.
  1497. Up to 10 alternatives may given in a pattern, separated by \e|, with the
  1498. caveat that \e(\ ...\ \e|\ ...\ \e) is illegal.
  1499. X.Sh "Interpretation and Interpolation"
  1500. Many of the strings that
  1501. X.I trn
  1502. handles are subject to interpretations of several types.
  1503. Under filename expansion, an initial \*(L"~/\*(R" is translated to the name
  1504. of your home directory, and \*(L"~name\*(R" is translated to the login
  1505. directory for the user specified.
  1506. XFilename expansion will also expand an initial environment variable, and
  1507. also does the backslash, uparrow and percent expansion mentioned below.
  1508. X.PP
  1509. All interpreted strings go through backslash, uparrow and percent
  1510. interpretation.
  1511. The backslash escapes are the normal ones (such as \en, \et, \ennn, etc.).
  1512. The uparrow escapes indicate control codes in the normal fashion.
  1513. Backslashes or uparrows to be passed through should be escaped with backslash.
  1514. The special percent escapes are similar to printf percent escapes.
  1515. These cause the substitution of various run-time values into the string.
  1516. The following are currently recognized:
  1517. X.Ip %a 8
  1518. Current article number.
  1519. X.Ip %A 8
  1520. XFull name of current article (%P/%c/%a).
  1521. X.Ip %b 8
  1522. Destination of last save command, often a mailbox.
  1523. X.Ip %B 8
  1524. The byte offset to the beginning of the part of the article to be saved,
  1525. set by the save command.
  1526. The \*(L's\*(R' and \*(L'S\*(R' commands set it to 0, and the \*(L'w\*(R'
  1527. and \*(L'W\*(R' commands set it to the byte offset of the body of the article.
  1528. X.Ip %c 8
  1529. Current newsgroup, directory form.
  1530. X.Ip %C 8
  1531. Current newsgroup, dot form.
  1532. X.Ip %d 8
  1533. XFull name of newsgroup directory (%P/%c).
  1534. X.Ip %D 8
  1535. X\*(L"Distribution:\*(R" line from the current article.
  1536. X.Ip %e 8
  1537. The last command executed to extract data from an article.
  1538. X.Ip %E 8
  1539. The last directory where an extracted file went.
  1540. X.Ip %f 8
  1541. X\*(L"From:\*(R" line from the current article, or the \*(L"Reply-To:\*(R"
  1542. line if there is one.
  1543. This differs from %t in that comments (such as the full name) are not
  1544. stripped out with %f.
  1545. X.Ip %F 8
  1546. X\*(L"Newsgroups:\*(R" line for a new article, constructed from
  1547. X\*(L"Newsgroups:\*(R" and \*(L"Followup-To:\*(R" lines of current article.
  1548. X.Ip %h 8
  1549. Name of the header file to pass to the mail or news poster,
  1550. containing all the information that the poster program needs in the
  1551. form of a message header.
  1552. It may also contain a copy of the current article.
  1553. The format of the header file is controlled by the MAILHEADER and NEWSHEADER
  1554. environment variables.
  1555. X.Ip %H 8
  1556. Host name (your machine's name).
  1557. X.Ip %i 8
  1558. X\*(L"Message-I.D.:\*(R" line from the current article, with <> guaranteed.
  1559. X.Ip %I 8
  1560. The reference indication mark (see the
  1561. X.B \-F
  1562. switch.)
  1563. X.Ip %l 8
  1564. The news administrator's login name, if any.
  1565. X.Ip %L 8
  1566. Login name (yours).
  1567. X.Ip %m 8
  1568. The current mode of
  1569. X.I trn,
  1570. for use in conditional macros.
  1571. X.Sp
  1572. X.nf
  1573. X    i    Initializing.
  1574. X    n    Newsgroup selection level.
  1575. X    t    Thread selection level.
  1576. X    a    Article selection level (What next?).
  1577. X    p    Pager level (MORE prompt).
  1578. X    u    Set unread? prompt.
  1579. X    A    Add this newsgroup?
  1580. X    B    aBandon confirmation.
  1581. X    C    Catchup confirmation.
  1582. X    D    Delete bogus newsgroups?
  1583. X    F    Is followup a new topic?
  1584. X    M    Use mailbox format?
  1585. X    R    Resubscribe to this newsgroup?
  1586. X.fi
  1587. X.Sp
  1588. Note that yes/no questions are all upper-case modes.
  1589. If, for example, you wanted to disallow defaults on all yes/no questions,
  1590. you could define the following macro:
  1591. X.Sp
  1592. X.nf
  1593. X\e040    %(%m=[A-Z]?h: )
  1594. X.fi
  1595. X.Ip %M 8
  1596. The number of articles marked to return via the \*(L'M\*(R' command.
  1597. If the same article is Marked multiple times, \*(L"%M\*(R" counts it
  1598. multiple times in the current implementation.
  1599. X.Ip %n 8
  1600. X\*(L"Newsgroups:\*(R" line from the current article.
  1601. X.Ip %N 8
  1602. XFull name (yours).
  1603. X.Ip %o 8
  1604. Organization (yours).
  1605. X.Ip %O 8
  1606. Original working directory (where you ran rn from).
  1607. X.Ip %p 8
  1608. Your private news directory, normally ~/News.
  1609. X.Ip %P 8
  1610. Public news spool directory, normally /usr/spool/news on systems that don't use NNTP.
  1611. X.Ip %r 8
  1612. Last reference on references line of current article (parent article id).
  1613. X.Ip %R 8
  1614. References list for a new article, constructed from the references and article
  1615. ID of the current article.
  1616. X.Ip %s 8
  1617. Subject, with all Re's and (nf)'s stripped off.
  1618. X.Ip %S 8
  1619. Subject, with one \*(L"Re:\*(R" stripped off.
  1620. X.Ip %t 8
  1621. X\*(L"To:\*(R" line derived from the \*(L"From:\*(R" and \*(L"Reply-To:\*(R"
  1622. lines of the current article.
  1623. This always returns an Internet format address.
  1624. X.Ip %T 8
  1625. X\*(L"To:\*(R" line derived from the \*(L"Path:\*(R" line of the
  1626. current article to produce a uucp path.
  1627. X.Ip %u 8
  1628. The number of unread articles in the current newsgroup.
  1629. X.Ip %U 8
  1630. The number of unread articles in the current newsgroup, not counting the
  1631. the current article.
  1632. When threads are selected, this count reflects only selected articles.
  1633. X.Ip %v 8
  1634. The number of unselected articles, not counting the current article
  1635. if it is unselected.
  1636. X.Ip %w 8
  1637. The directory where mthreads keeps its tmp files.
  1638. X.Ip %W 8
  1639. The directory where thread files are placed.
  1640. X.Ip %x 8
  1641. The news library directory.
  1642. X.Ip %X 8
  1643. The rn library directory.
  1644. X.Ip %z 8
  1645. The length of the current article in bytes.
  1646. X.Ip %Z 8
  1647. The number of selected threads.
  1648. X.Ip %~ 8
  1649. Your home directory.
  1650. X.Ip %. 8
  1651. The directory containing your dot files, which is your home directory unless
  1652. the environment variable DOTDIR is defined when rn is invoked.
  1653. X.Ip %# 8
  1654. The current count for a multi-file save, starting with 1.
  1655. This value is incremented by one for each file saved or extracted within a
  1656. single command.
  1657. X.Ip %$ 8
  1658. Current process number.
  1659. X.Ip %/ 8
  1660. Last search string.
  1661. X.Ip %% 8
  1662. A percent sign.
  1663. X.Ip "%{name} or %{name\-default}" 8
  1664. The environment variable \*(L"name\*(R".
  1665. X.Ip %[name] 8
  1666. The value of header line \*(L"Name:\*(R" from the current article.
  1667. The \*(L"Name:\ \*(R" is not included.
  1668. XFor example \*(L"%D\*(R" and \*(L"%[distribution]\*(R" are equivalent.
  1669. The name must be spelled out in full.
  1670. X.Ip %`command` 8
  1671. Inserts the output of the command, with any embedded newlines translated
  1672. to space.
  1673. X.Ip %""prompt"" 8
  1674. Prints prompt on the terminal, then inputs one string, and inserts it.
  1675. X.Ip "%(test_text=pattern?then_text:else_text)" 8
  1676. If
  1677. X.I test_text
  1678. matches
  1679. X.IR pattern ,
  1680. has the value
  1681. X.IR then_text ,
  1682. otherwise
  1683. X.IR else_text .
  1684. The \*(L":else_text\*(R" is optional, and if absent, interpolates the null string.
  1685. The = may be replaced with != to negate the test.
  1686. To quote any of the metacharacters
  1687. X(\*(L'=\*(R', \*(L'?\*(R', \*(L':\*(R', or \*(L')\*(R'),
  1688. precede with a backslash.
  1689. X.Ip %digit 8
  1690. The digits 1 through 9 interpolate the string matched by the nth bracket
  1691. in the last pattern match that had brackets.
  1692. If the last pattern had alternatives, you may not know the number of the
  1693. bracket you want\*(--%0 will give you the last bracket matched.
  1694. X.PP
  1695. Modifiers: to capitalize the first letter, insert \*(L'^\*(R':
  1696. X\*(L"%^C\*(R" produces something like \*(L"Net.jokes\*(R".
  1697. Inserting \*(L'_\*(R' causes the first letter following the last
  1698. X\&\*(L'/\*(R' to be capitalized: \*(L"%_c\*(R" produces \*(L"net/Jokes\*(R".
  1699. X.PP
  1700. Inserting \*(L'\\\*(R' will insert a backslash before
  1701. any characters that would be magic in a regular expression:
  1702. X\*L"%\\C\*(R" produces \*(L"net\\.jokes\*(R".
  1703. This is called regexp quoting.
  1704. X.SH ENVIRONMENT
  1705. The following environment variables are paid attention to by
  1706. X.IR trn .
  1707. In general the default values assumed for these variables by
  1708. X.I trn
  1709. are reasonable, so if you are using
  1710. X.I trn
  1711. for the first time, you can safely ignore this section.
  1712. Note that the defaults below may not correspond precisely to the defaults
  1713. on your system.
  1714. To find the actual defaults you would need to look in config.h and common.h
  1715. in the trn source directory, and the file INIT in the trn library.
  1716. X.PP
  1717. Those variables marked (%) are subject to % interpolation, and those marked
  1718. X(~) are subject to both % interpolation and ~ interpretation.
  1719. X.Ip "ATTRIBUTION (%)" 8
  1720. Gives the format of the attribution line in front of the quoted article
  1721. included by an F command.
  1722. X.Sp
  1723. Default: In article %i %f writes:
  1724. X.Ip "AUTOSUBSCRIBE" 8
  1725. When
  1726. X.I trn
  1727. is checking for new newsgroups and finds one
  1728. matching one of the patterns in AUTOSUBSCRIBE, the new group is
  1729. automatically added to the end of the .newsrc, subscribed.
  1730. Newsgroups not matching this or AUTOUNSUBSCRIBE, below, are offered
  1731. to the user.
  1732. X.Sp
  1733. AUTOSUBSCRIBE is a comma separated list of newsgroup patterns ala
  1734. X\*(L'o\*(R', \*(L'/\*(R', etc.
  1735. It can also include \*(L"but not\*(R" entries preceded by \*(L'!\*(R'.
  1736. X\*(L"a,b,!c,d\*(R" is read as \*(L"matching a or b, unless it also
  1737. matches c; matching d regardless\*(R".
  1738. Another way to look at it is \*(L"(((a or b) and not c) or d)\*(R".
  1739. To automatically subscribe to all local
  1740. groups but be choosy about non-local groups, one might say \*(L"*,!*.*\*(R".
  1741. X.Sp
  1742. Default: (none)
  1743. X.Ip "AUTOUNSUBSCRIBE" 8
  1744. AUTOUNSUBSCRIBE is very similar to AUTOSUBSCRIBE, above, but
  1745. new newsgroups matching it are automatically added to the end
  1746. of the .newsrc file, unsubscribed.
  1747. If a newsgroup matches AUTOSUBSCRIBE, AUTOUNSUBSCRIBE is not consulted.
  1748. X.Sp
  1749. Default: (none)
  1750. X.Ip "CANCEL (~)" 8
  1751. The shell command used to cancel an article.
  1752. X.Sp
  1753. Default: inews \-h < %h
  1754. X.Ip "CANCELHEADER (%)" 8 13v
  1755. The format of the file to pass to the CANCEL command in order to cancel
  1756. an article.
  1757. X.Sp
  1758. Default:
  1759. X.br
  1760. Newsgroups: %n
  1761. X.br
  1762. Subject: cmsg cancel %i
  1763. X.br
  1764. References: %R
  1765. X.br
  1766. Reply-To: %L@%H (%N)
  1767. X.br
  1768. Distribution: %D
  1769. X.br
  1770. Organization: %o
  1771. X.sp 1
  1772. X%i cancelled from rn.
  1773. X.Ip DOTDIR 8
  1774. Where to find your dot files, if they aren't in your home directory.
  1775. Can be interpolated using \*(L"%.\*(R".
  1776. X.Sp
  1777. Default: $HOME
  1778. X.Ip "EDITOR (~)" 8
  1779. The name of your editor, if VISUAL is undefined.
  1780. X.Sp
  1781. Default: whatever your news administrator compiled in, usually vi.
  1782. X.Ip "EXSAVER (%)" 8
  1783. The shell command to execute in order to extract data to either /bin/sh
  1784. or a user-specified command.
  1785. X.Sp
  1786. Default: tail +%Bc %A | %e
  1787. X.Ip "EDITOR (~)" 8
  1788. The name of your editor, if VISUAL is undefined.
  1789. X.Sp
  1790. Default: whatever your news administrator compiled in, usually vi.
  1791. X.Ip "FIRSTLINE (%)" 8
  1792. Controls the format of the line displayed at the top of an article.
  1793. Warning: this may go away.
  1794. X.Sp
  1795. The default in an unthreaded group is approximately:
  1796. X.Sp
  1797. Article %a %(%U%M!=^00$?(%U more%(%M!=^0$? + %M Marked to return)\e) )in %C:
  1798. X.Sp
  1799. While the default in a threaded group is almost:
  1800. X.Sp
  1801. X%C #%a%(%Z=^0$?%(%U!=^0$? (%U more\e)): (%U + %v more\e))
  1802. X.Ip HIDELINE 8
  1803. If defined, contains a regular expression which matches article lines to
  1804. be hidden, in order, for instance, to suppress quoted material.
  1805. A recommended string for this purpose is \*(L"^>...\*(R", which \fIdoesn't\fR
  1806. hide lines with only \*(L'>\*(R', to give some indication that quoted
  1807. material is being skipped.
  1808. If you want to hide more than one pattern, you can use \*(L"\||\|\*(R" to
  1809. separate the alternatives.
  1810. You can view the hidden lines by restarting the article with the \*(L'v\*(R'
  1811. command.
  1812. X.Sp
  1813. There is some overhead involved in matching each line of the article against
  1814. a regular expression.
  1815. You might wish to use a baud-rate modifier to enable this feature only at
  1816. low baud rates.
  1817. X.Sp
  1818. Default: undefined
  1819. X.Ip HOME 8
  1820. Your home directory.
  1821. Affects ~ interpretation, and the location of your
  1822. dot files if DOTDIR is not defined.
  1823. X.Sp
  1824. Default: $LOGDIR
  1825. X.Ip "KILLGLOBAL (~)" 8
  1826. Where to find the KILL file to apply to every newsgroup.
  1827. See the \*(L'^K\*(R' command at the newsgroup selection level.
  1828. X.Sp
  1829. Default: %p/KILL
  1830. X.Ip "KILLLOCAL (~)" 8
  1831. Where to find the KILL file for the current newsgroup.
  1832. See the commands \*(L'K\*(R' and \*(L'^K\*(R' at the article selection level,
  1833. and the search modifier \*(L'K\*(R'.
  1834. X.Sp
  1835. Default: %p/%c/KILL
  1836. X.Ip LOGDIR 8
  1837. Your home directory if HOME is undefined.
  1838. Affects ~ interpretation, and the location of your
  1839. dot files if DOTDIR is not defined.
  1840. X.Sp
  1841. Default: none.
  1842. X.Sp
  1843. XExplanation: you must have either $HOME or $LOGDIR.
  1844. X.Ip LOGNAME 8
  1845. Your login name, if USER is undefined.
  1846. May be interpolated using \*(L"%L\*(R".
  1847. X.Sp
  1848. Default: value of getlogin().
  1849. X.Ip LOCALTIMEFMT 8
  1850. The format used by strftime() to print the local time.
  1851. The Date line is only displayed in local time if the group is threaded
  1852. X(see the \-H option for more information on Date).
  1853. X.Sp
  1854. Default: %a %b %e %X %Z %Y
  1855. X.Sp
  1856. which is the same format as the
  1857. X.IR date (1)
  1858. command.
  1859. X.Ip "MAILCALL (~)" 8
  1860. What to say when there is new mail.
  1861. X.Sp
  1862. Default: (Mail)
  1863. X.Ip "MAILFILE (~)" 8
  1864. Where to check for mail.
  1865. X.Sp
  1866. Default: /usr/spool/mail/%L
  1867. X.Ip "MAILHEADER (%)" 8
  1868. The format of the header file for replies.
  1869. See also MAILPOSTER.
  1870. X.Sp
  1871. Default:
  1872. X.Sp
  1873. To: %T
  1874. X.br
  1875. Subject: %(%i=^$?:Re: %S
  1876. X.br
  1877. Newsgroups: %n
  1878. X.br
  1879. In-Reply-To: %i)
  1880. X.br
  1881. X%(%[references]!=^$?References\\: %[references]
  1882. X.br
  1883. X)Organization: %o
  1884. X.br
  1885. Cc: 
  1886. X.br
  1887. Bcc: \en\en
  1888. X.Ip "MAILPOSTER (~)" 8
  1889. The shell command to be used by the reply commands (r and R)
  1890. in order to allow you to enter and deliver the response.
  1891. X.I trn
  1892. will not itself call upon an editor for replies\*(--this
  1893. is a function of the program called by
  1894. X.IR trn .
  1895. See also MAILHEADER.
  1896. X.Sp
  1897. Default: Rnmail \-h %h
  1898. X.Ip "MBOXSAVER (~)" 8
  1899. The shell command to save an article in mailbox format.
  1900. X.Sp
  1901. Default: %X/mbox.saver %A %P %c %a %B %C "%b" \e
  1902. X.br
  1903. X"From: %T %`date`"
  1904. X.Sp
  1905. XExplanation: the first seven arguments are the same as for NORMSAVER.
  1906. The eighth argument to the shell script is the new From: line
  1907. for the article, including the posting date,
  1908. derived either directly from the Posted: line, or not-so-directly from
  1909. the Date: line.
  1910. Header munging at its finest.
  1911. X.Ip MODSTRING 8
  1912. The string to insert in the group summary line, which heads each article,
  1913. for a moderated group.
  1914. See also NOPOSTRING.
  1915. X.Sp
  1916. Default: " (moderated)"
  1917. X.Ip NAME 8
  1918. Your full name.
  1919. May be interpolated using \*(L"%N\*(R".
  1920. X.Sp
  1921. Default: name from /etc/passwd, or ~/.fullname.
  1922. X.Ip "NEWSHEADER (%)" 8 16v
  1923. The format of the header file for followups.
  1924. See also NEWSPOSTER.
  1925. X.Sp
  1926. Default:
  1927. X.Sp
  1928. Newsgroups: %(%F=^$?%C:%F)
  1929. X.br
  1930. Subject: %(%S=^$?%"\en\enSubject: ":Re: %S)
  1931. X.br
  1932. Summary:
  1933. X.br
  1934. XExpires: 
  1935. X.br
  1936. X%(%R=^$?:References: %R
  1937. X.br
  1938. X)Sender: 
  1939. X.br
  1940. Reply-To: %L@%H (%N)
  1941. X.br
  1942. XFollowup-To: 
  1943. X.br
  1944. Distribution: %(%i=^$?%"\enDistribution: ":%D)
  1945. X.br
  1946. Organization: %o
  1947. X.br
  1948. Keywords: \en\en
  1949. X.Ip NEWSORG 8
  1950. XEither the name of your organization, or the name of a file containing the
  1951. name of your organization.
  1952. X(For use at sites where the ORGANIZATION environmental variable is already
  1953. in use.
  1954. NEWSORG will override ORGANIZATION if both are present.)
  1955. May be interpolated using \*(L"%o\*(R".
  1956. X.Sp
  1957. Default: whatever your news administrator compiled in.
  1958. X.Ip "NEWSPOSTER (~)" 8
  1959. The shell command to be used by the followup commands (f and F)
  1960. in order to allow you to enter and post a followup news article.
  1961. X.I trn
  1962. will not itself call upon an editor for followups\*(--this
  1963. is a function of the program called by
  1964. X.IR trn .
  1965. See also NEWSHEADER.
  1966. X.Sp
  1967. Default: Pnews \-h %h
  1968. X.Ip NEWSRC 8
  1969. Your newsgroup subscription list.
  1970. X.Sp
  1971. Default: $HOME/.newsrc
  1972. X.Ip NNTPSERVER 8
  1973. The hostname of your NNTPSERVER.
  1974. X[This does not apply unless you are running the NNTP version of rn.]
  1975. X.Sp
  1976. Default: the hostname listed in the server file, usually
  1977. X/usr/local/lib/rn/server.
  1978. X.Ip NOPOSTRING 8
  1979. The string to insert in the group summary line, which heads each article,
  1980. for a group to which local posting is not allowed.
  1981. See also MODSTRING.
  1982. X.Sp
  1983. Default: " (no posting)"
  1984. X.Ip "NORMSAVER (~)" 8
  1985. The shell command to save an article in the normal (non-mailbox) format.
  1986. X.Sp
  1987. Default: %X/norm.saver %A %P %c %a %B %C "%b"
  1988. X.Ip ORGANIZATION 8
  1989. XEither the name of your organization, or the name of a file containing the
  1990. name of your organization.
  1991. X(If NEWSORG is set, it will override ORGANIZATION.)
  1992. May be interpolated using \*(L"%o\*(R".
  1993. X.Sp
  1994. Default: whatever your news administrator compiled in.
  1995. X.Ip PAGESTOP 8
  1996. If defined, contains a regular expression which matches article lines to
  1997. be treated as form-feeds.
  1998. There are at least two things you might want to do with this.
  1999. To cause page breaks between articles in a digest, you might define it
  2000. as \*(L"^--------\*(R".
  2001. To force a page break before a signature, you could define it
  2002. as \*(L"^-- $\*(R".
  2003. X(Then, when you see \*(L"--\*(R" at the bottom of the page, you can skip
  2004. the signature if you so desire by typing \*(L'n\*(R' instead of space.)
  2005. To do both, you could use \*(L"^--\*(R".
  2006. If you want to break on more than one pattern, you can use \*(L"\||\|\*(R" to
  2007. separate the alternatives.
  2008. X.Sp
  2009. There is some overhead involved in matching each line of the article against
  2010. a regular expression.
  2011. You might wish to use a baud-rate modifier to enable this feature only at
  2012. low baud rates.
  2013. X.Sp
  2014. Default: undefined
  2015. X.Ip "PIPESAVER (%)" 8
  2016. The shell command to execute in order to accomplish a save to a pipe
  2017. X(\*(L"s\ |\ command\*(R" or \*(L"w\ |\ command\*(R").
  2018. The command typed by the user is substituted in as %b.
  2019. X.Sp
  2020. Default: %(%B=^0$?<%A:tail +%Bc %A |) %b
  2021. X.Sp
  2022. XExplanation: if %B is 0, the command is \*(L"<%A %b\*(R", otherwise
  2023. the command is \*(L"tail +%Bc %A | %b\*(R".
  2024. X.Ip REPLYTO 8
  2025. The value of the \*(L"Reply-To:\*(R" header, if needed.
  2026. X.Sp Default: %L@%H (%N)
  2027. X.Ip RNINIT 8
  2028. Default values for switches may be passed to
  2029. X.I trn
  2030. by placing them in either RNINIT or TRNINIT.
  2031. RNINIT is used when in rn-compatibility mode or if TRNINIT isn't found.
  2032. Any switch that is set in this way may be overruled 
  2033. on the command line, or via the \*(L'&\*(R' command from within
  2034. X.IR trn .
  2035. Binary-valued switches that are set with \*(L"\-switch\*(R" may be unset
  2036. using \*(L"+switch\*(R".
  2037. X.Sp
  2038. If RNINIT begins with a \*(L'/\*(R' it is assumed to be the name of a file
  2039. containing switches.
  2040. If you want to set many environment variables but don't want to keep
  2041. them all in your environment, or if the use of any of these variables
  2042. conflicts with other programs, you can use this feature along with the
  2043. X.B \-E
  2044. switch to set the environment variables upon startup.
  2045. X.Sp
  2046. Default: \*(L" \*(R".
  2047. X.Ip "RNMACRO (~)" 8
  2048. The name of the file containing macros and key mappings.
  2049. See the MACROS section.
  2050. X.Sp
  2051. Default: %./.rnmac
  2052. X.Ip "SAVEDIR (~)" 8
  2053. The name of the directory to save to, if the save command does not specify
  2054. a directory name.
  2055. X.Sp
  2056. Default:
  2057. X.br
  2058. X   If
  2059. X.B \-/
  2060. is set: %p/%c
  2061. X.br
  2062. X   If
  2063. X.B +/
  2064. is set: %p
  2065. X.Ip "SAVENAME (%)" 8
  2066. The name of the file to save to, if the save command contains only a
  2067. directory name.
  2068. X.Sp
  2069. Default:
  2070. X.br
  2071. X   If
  2072. X.B \-/
  2073. is set: %a
  2074. X.br
  2075. X   If
  2076. X.B +/
  2077. is set: %^C
  2078. X.Ip "SELECTCHARS" 8
  2079. The characters used by the thread selector to select the associated thread
  2080. of discussion.
  2081. You can specify up to 64 visible characters, including upper- and lower-case
  2082. letters, numbers, and many punctuation characters.
  2083. Selection characters override command characters in the selector, but are
  2084. not excluded from macro expansion, so be careful.
  2085. X.br
  2086. Default: abcdefgijlorstuvwxz1234567890
  2087. X.br
  2088. X(h, k, n, p, q, and y are omitted to allow them to be typed as commands).
  2089. X.Ip SHELL 8
  2090. The name of your preferred shell.
  2091. It will be used by the \*(L'!\*(R', \*(L'S\*(R' and \*(L'W\*(R' commands.
  2092. X.Sp
  2093. Default: whatever your news administrator compiled in.
  2094. X.Ip "SUBJLINE (%)" 8
  2095. Controls the format of the lines displayed by the \*(L'=\*(R' command at
  2096. the article selection level.
  2097. X.Sp
  2098. Default: %s
  2099. X.Ip "SUPERSEDEHEADER (%)" 8 16v
  2100. The format of the header file for a supersede article.
  2101. X.Sp
  2102. Default:
  2103. X.Sp
  2104. XFrom: %L@%H (%N)
  2105. X.br
  2106. Newsgroups: %n
  2107. X.br
  2108. Subject: %S
  2109. X.br
  2110. Distribution: %D
  2111. X.br
  2112. Organization: %o
  2113. X.br
  2114. Supersedes: %i
  2115. X.Ip TERM 8
  2116. Determines which termcap entry to use, unless TERMCAP contains the entry.
  2117. X.Ip TERMCAP 8
  2118. Holds either the name of your termcap file, or a termcap entry.
  2119. X.Sp
  2120. Default: /etc/termcap, normally.
  2121. X.Ip TRNINIT 8
  2122. Trn's version of the RNINIT environment variable.
  2123. See RNINIT for a description.
  2124. X.Ip "UNSHAR (~)" 8
  2125. The shell command to execute in order to accomplish the unshar'ing of a
  2126. shell archive.
  2127. X.Sp
  2128. Default: /bin/sh
  2129. X.Ip USER 8
  2130. Your login name.
  2131. May be interpolated using \*(L"%L\*(R".
  2132. X.Sp
  2133. Default: $LOGNAME
  2134. X.Ip "VISUAL (~)" 8
  2135. The name of your editor.
  2136. X.Sp
  2137. Default: $EDITOR
  2138. X.Ip "YOUSAID (%)" 8
  2139. Gives the format of the attribution line in front of the quoted article
  2140. included by an R command.
  2141. X.Sp
  2142. Default: In article %i you write:
  2143. X.SH MACROS
  2144. When
  2145. X.I trn
  2146. starts up, it looks for a file containing macro definitions (see environment
  2147. variable RNMACRO).
  2148. Any sequence of commands may be bound to any sequence of keys, so you
  2149. could remap your entire keyboard if you desire.
  2150. Blank lines or lines beginning with # in the macro file are considered
  2151. comments; otherwise
  2152. X.I trn
  2153. looks for two fields separated by white space.
  2154. The first field gives the sequence of keystrokes that trigger the macro,
  2155. and the second field gives the sequence of commands to execute.
  2156. Both fields are subject to % interpolation, which will also translate
  2157. backslash and uparrow sequences.
  2158. X(The keystroke field is interpreted at startup time, but the command field
  2159. is interpreted at macro execution time so that you may refer to % values
  2160. in a macro.)
  2161. XFor example, if you want to reverse the roles of carriage return and
  2162. space in
  2163. X.I trn
  2164. X.Sp
  2165. X^J    \e040
  2166. X.br
  2167. X^M    \e040
  2168. X.br
  2169. X\e040    ^J
  2170. X.Sp
  2171. will do just that.
  2172. By default, all characters in the command field are interpreted as the
  2173. canonical
  2174. X.I trn
  2175. characters, i.e. no macro expansion is done.
  2176. Otherwise the above pair of macros would cause an infinite loop.
  2177. To force macro expansion in the command field, enclose the
  2178. macro call with ^( ... ^) thusly:
  2179. X.Sp
  2180. X@s    |mysavescript
  2181. X.br
  2182. X@w    w^(@s^)
  2183. X.Sp
  2184. You can use the %() conditional construct to construct macros that work
  2185. differently under different circumstances.
  2186. In particular, the current mode (%m) of
  2187. X.I trn
  2188. could be used to make a command that only works at a particular level.
  2189. This is particularly vital for the thread selector, which uses most of
  2190. the lower-case letters to select the associated thread of discussion.
  2191. XFor example,
  2192. X.Sp
  2193. a    %(%m=t?a:s art.hold\en)
  2194. X.Sp
  2195. will return the original letter (a) in the thread selector, and the command
  2196. X\*(L"s art.hold\en\*(R" everywhere else.
  2197. X.Sp
  2198. X%(%{TERM}=vt100?^[[O)    /^J
  2199. X.Sp
  2200. will do the binding only if the terminal type is vt100,
  2201. though if you have many of these it would be better to have separate
  2202. files for each terminal.
  2203. X.Sp
  2204. If you want to bind a macro to a function key that puts a common garbage character
  2205. after the sequence (such as the carriage return on the end of Televideo 920
  2206. function sequences), DO NOT put the carriage return
  2207. into all the sequences or you will waste a CONSIDERABLE amount of internal
  2208. storage.
  2209. Instead of \*(L"^AF^M\*(R", put \*(L"^AF+1\*(R", which indicates to
  2210. X.I trn
  2211. that it should gobble up one character after the F.
  2212. X.SH "WHAT'S NEW?"
  2213. Here's a quick run-down of
  2214. X.IR trn 's
  2215. new features and commands aimed at the knowledgeable
  2216. X.I rn
  2217. user.
  2218. X.Sp
  2219. One of the biggest improvements is the Thread Selector, which is bound
  2220. to the \*(L'+\*(R' key.
  2221. The selector displays a list of subject threads and (by default) authors
  2222. to allow you to select the topics that interest you by typing their
  2223. associated letter.
  2224. The thread selector can also be used to browse articles that have already
  2225. been read, to selectively re-read discussions (use the \*(L'U\*(R' command).
  2226. X.Sp
  2227. Another big improvement is the thread-ordered display of articles.
  2228. While reading each topic,
  2229. X.I trn
  2230. displays each article and its replies in the order of their parent/child
  2231. relationship.
  2232. This lets you follow the flow of the discussion better, instead of jumping
  2233. around from idea to idea or even reading a reply before the original article.
  2234. X.Sp
  2235. Along this same line is the addition of the article-tree display in the
  2236. upper-right corner of the header.
  2237. Glancing at the tree gives you a better feel for how the articles you are
  2238. reading relate to each other.
  2239. X.Sp
  2240. The header has also been modified to hide a few more header-lines by default
  2241. X(e.g. References), but, as always, you can override these with \-h.
  2242. There is also some new \*(L"magic\*(R" in the header: the From header is
  2243. trimmed to be just the comment portion (if available), and the Date header
  2244. is displayed in local time (in threaded groups).
  2245. Override these defaults with +H.
  2246. X.Sp
  2247. Once you begin reading articles, use the regular movement commands (n, N,
  2248. p, P, etc.) as you normally would.
  2249. Then, check out the [, ], {, and } commands to move around in the article
  2250. tree a bit more directly.
  2251. XFor example, the \*(L'[\*(R' command takes you to your parent article,
  2252. even if it was already read, which is very useful for tracking down the
  2253. cited portion of the article in its original context.
  2254. X.Sp
  2255. There are additional kill commands for the entire thread (J) and the
  2256. current article and all its replies (,).
  2257. The KILL files have been extended to allow killing by thread (T), which will
  2258. kill a topic even if people fine-tune the subject along the way.
  2259. X.Sp
  2260. There is also an easy way to skip around among the various threads with
  2261. the < and > commands.
  2262. X.Sp
  2263. Note:  your news administrator has the option of turning thread processing
  2264. off for individual groups, and thus it is possible for some groups to not
  2265. have any pre-processed thread information available for use.
  2266. When
  2267. X.I trn
  2268. encounters such a group, it generates the thread information on the fly
  2269. while entering the group.
  2270. XFor really large groups (or really slow systems), this can take an
  2271. appreciable amount of time.
  2272. If you can't talk your news administrator into pre-threading the group,
  2273. you can turn off the thread database on a group-by-group basis using
  2274. the \*(L't\*(R' command at the newsgroup selection level.
  2275. Groups turned off in this way are read in the traditional
  2276. X.I rn
  2277. fashion\*(--articles arranged in arrival order with optional subject
  2278. searching and no thread selector.
  2279. X.Sp
  2280. There is a new command, \*(L"e dir\*(R", that extracts a shell archive or
  2281. uuencoded file into the specified directory.
  2282. It is even possible to extract other data formats if you specify the
  2283. appropriate filter command (e.g. \*(L"e dir|cmd\*(R".
  2284. X.Sp
  2285. Also, if you plan to use macro definitions, it is good to keep in mind
  2286. that the thread selector uses most of the lower-case letters for thread
  2287. selection, and thus it is a good idea to explicitly set the mode(s) in
  2288. which a macro applies.
  2289. XFor example, if you want to press 'f' from the article pager/selector to
  2290. forward the current article to the user \*(L"smith\*(R", you could define:
  2291. X.Sp
  2292. X.nf
  2293. X    f    %(%m=[pa]?|mail smith\en:f)
  2294. X.fi
  2295. X.Sp
  2296. This checks the current mode (%m) and if it is \*(L'p\*(R' or \*(L'a\*(R'
  2297. it expands it to the string \*(L"|mail smith\en\*(R", otherwise it returns
  2298. the letter \*(L'f\*(R'.
  2299. In some cases, you may simply wish to exclude the thread selector from a
  2300. macro with the conditional \*(L"%m!=t\*(R".
  2301. X.Sp
  2302. XFinally, you'll probably want to use the new options,
  2303. X.B \-x
  2304. and
  2305. X.B \-X
  2306. to ensure that all the newest features are available for use.
  2307. These options might be on by default, depending on how your administrator
  2308. decided to install
  2309. X.IR trn .
  2310. X.SH AUTHORS
  2311. Rn was created by Larry Wall <lwall@jpl-devvax.jpl.nasa.gov>
  2312. X.br
  2313. and is now under the direction of Stan Barber <sob@bcm.tmc.edu>.
  2314. X.br
  2315. Threaded version by Wayne Davison <davison@borland.com>
  2316. X.br
  2317. X(Mail all bug reports for trn to Wayne.)
  2318. X.br
  2319. Regular expression routines are borrowed from emacs, by James Gosling.
  2320. X.SH FILES
  2321. X.Ip "%./.newsrc" 1.25i
  2322. status of your news reading
  2323. X.Ip "%./.oldnewsrc" 1.25i
  2324. backup copy of your
  2325. X.I .newsrc
  2326. from start of session
  2327. X.Ip "%./.rnlock" 1.25i
  2328. lock file so you don't screw up your
  2329. X.I .newsrc
  2330. X.Ip "%./.rnlast" 1.25i
  2331. info from last run of rn
  2332. X.Ip "%./.rnsoft" 1.25i
  2333. soft pointers into /usr/lib/news/active to speed startup, synchronous with
  2334. X.I .newsrc
  2335. X.Ip "%./.rnhead" 1.25i
  2336. temporary header file to pass to a mailer or news poster
  2337. X.Ip "%./.rnmac" 1.25i
  2338. macro and keymap definitions
  2339. X.Ip "%p" 1.25i
  2340. your news save directory, usually ~/News
  2341. X.Ip "%x/active" 1.25i
  2342. the list of active newsgroups, usually /usr/lib/news/active on systems that don't use NNTP
  2343. X.Ip "%P" 1.25i
  2344. the public news spool directory, usually /usr/spool/news on systems that don't use NNTP
  2345. X.Ip "%X/INIT" 1.25i
  2346. system-wide default switches
  2347. X.SH SEE ALSO
  2348. newsrc(5), more(1), readnews(1), Pnews(1), Rnmail(1)
  2349. X.SH DIAGNOSTICS
  2350. Generally self-documenting, as they say.
  2351. X.SH BUGS
  2352. The
  2353. X.B \-h
  2354. switch can only hide header lines that
  2355. X.I trn
  2356. knows about.
  2357. X.PP
  2358. The \*(L'\-\*(R' command doesn't cross newsgroup boundaries, and only undoes
  2359. the last article selection.
  2360. X.PP
  2361. If you edit your
  2362. X.I .newsrc
  2363. while
  2364. X.I trn
  2365. is running,
  2366. X.I trn
  2367. will happily wipe out your changes when it decides to
  2368. write out the
  2369. X.I .newsrc
  2370. file.
  2371. X.PP
  2372. Marking of duplicate articles as read in cross-referenced newsgroups will
  2373. not work unless the Xref patch is installed in inews.
  2374. X.PP
  2375. If you get carried away with % or escape substitutions, you can overflow
  2376. buffers.
  2377. X.PP
  2378. There should be no fixed limit on the number of newsgroups.
  2379. X.PP
  2380. Some of the more esoteric features may be missing on machines with limited
  2381. address space.
  2382. END_OF_FILE
  2383. if test 83112 -ne `wc -c <'trn.1'`; then
  2384.     echo shar: \"'trn.1'\" unpacked with wrong size!
  2385. fi
  2386. # end of 'trn.1'
  2387. fi
  2388. echo shar: End of archive 13 \(of 13\).
  2389. cp /dev/null ark13isdone
  2390. MISSING=""
  2391. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 ; do
  2392.     if test ! -f ark${I}isdone ; then
  2393.     MISSING="${MISSING} ${I}"
  2394.     fi
  2395. done
  2396. if test "${MISSING}" = "" ; then
  2397.     echo You have unpacked all 13 archives.
  2398.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2399. else
  2400.     echo You still need to unpack the following archives:
  2401.     echo "        " ${MISSING}
  2402. fi
  2403. ##  End of shell archive.
  2404. exit 0
  2405.